AngularJS Allow-Origin to WebApi2

时间:2014-04-10 20:17:19

标签: angularjs asp.net-web-api2 allow-same-origin

我想在一个单独的域上托管我的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的标题中添加更多内容吗?或者我需要做什么?

3 个答案:

答案 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身份验证获得了具有相同方案的公共项目。我遵循的步骤是:

  1. 安装Microsoft.Owin.Cors库
  2. 创建自定义部分配置以启用/配置CORS
  3. 创建custom CORS Policy class(具有启用的来源)
  4. Setup of CORS policy取决于配置
  5. 希望这有帮助

答案 2 :(得分:0)

之前我遇到过同样的问题,对我来说有用的是从web.config中删除设置,只需将配置设置保留在WebApiConfig

有关详细信息,请参阅此answer