我想在一个单独的域上托管我的API。我已经为持有者角色中的令牌配置了我的auth-interceptor:
config.headers.Authorization = 'Bearer ' + sessionStorage.getItem('token');
在我的My WebApi2中,我已经使用cors配置了WebApiConfig。
var cors = new EnableCorsAttribute("http://mydomain.com", "*", "*");
config.EnableCors(cors);
在API的web.config中我还包括:
<customHeaders>
<add name="Access-Control-Allow-Origin" value="*" />
</customHeaders>
由于原产地不允许,我仍无法访问api。我可以在角色中使用auth-interceptor的标题中添加更多内容吗?或者我需要做什么?
答案 0 :(得分:2)
在API的web.config中,包括下面提到的代码:
<system.webServer>
<httpProtocol>
<customHeaders>
<remove name="X-Powered-By" />
<add name="Access-Control-Allow-Headers" value="Origin, X-Requested-With, Content-Type, Accept" />
</customHeaders>
</httpProtocol>
<handlers>
<remove name="ExtensionlessUrlHandler-ISAPI-4.0_32bit" />
<remove name="ExtensionlessUrlHandler-ISAPI-4.0_64bit" />
<remove name="ExtensionlessUrlHandler-Integrated-4.0" />
<remove name="WebDAV" />
<add name="ExtensionlessUrlHandler-ISAPI-4.0_32bit" path="*." verb="GET,HEAD,POST,DEBUG,PUT,DELETE,PATCH,OPTIONS" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework\v4.0.30319\aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv4.0,bitness32" responseBufferLimit="0" />
<add name="ExtensionlessUrlHandler-ISAPI-4.0_64bit" path="*." verb="GET,HEAD,POST,DEBUG,PUT,DELETE,PATCH,OPTIONS" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework64\v4.0.30319\aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv4.0,bitness64" responseBufferLimit="0" />
<add name="ExtensionlessUrlHandler-Integrated-4.0" path="*." verb="GET,HEAD,POST,DEBUG,PUT,DELETE,PATCH,OPTIONS" type="System.Web.Handlers.TransferRequestHandler" preCondition="integratedMode,runtimeVersionv4.0" />
</handlers>
</system.webServer>
我希望这会有所帮助。
感谢。
答案 1 :(得分:1)
你的Angular.js拦截器设置没问题。 我通过OAuth + Owin身份验证获得了具有相同方案的公共项目。我遵循的步骤是:
希望这有帮助
答案 2 :(得分:0)
之前我遇到过同样的问题,对我来说有用的是从web.config中删除设置,只需将配置设置保留在WebApiConfig
类
有关详细信息,请参阅此answer