从Angular到不同域的webAPI的调用变为OPTIONS

时间:2015-07-07 12:59:39

标签: c# angularjs asp.net-web-api http-post http-get

我正在使用asp.net WebAPI和Angular。当我从Angular打电话给我的WebAPI上的方法时,我在Chrome中遇到错误(它在IE中运行正常),我可以看到Fiddler这个调用是作为" OPTIONS" (我只使用$ http.post和$ http.get),在IE中它是作为帖子或获取。

我尝试使用请求配置标头('内容类型':' text / plain'),然后它在Chrome中正常运行。但问题是我正在使用也在标题中的授权,当我在标题中添加授权时,内容类型的黑客不再工作。

我还尝试添加NuGet包" Cors"到WebAPI(并在控制器中启用它[EnableCors(" "," "," *")]) ,但它没有做任何改变。

是否有人有解决此问题的方法?

非常感谢提前: - )

2 个答案:

答案 0 :(得分:0)

使用cors时,您是否也在Global.asax的Application_Start方法中添加代码?不只是在行动中添加EnableCorsAttribute

GlobalConfiguration.Configuration.EnableCors();

或者您不需要使用cors lib,当您在web.config的节点system.webServer

中添加子节点时也会使用它
<httpProtocol>    
  <customHeaders>    
    <add name="Access-Control-Allow-Origin" value="*" />    
    <add name="Access-Control-Allow-Headers" value="*" />    
    <add name="Access-Control-Allow-Methods" value="GET, POST, PUT, DELETE" />    
  </customHeaders>    
</httpProtocol>

答案 1 :(得分:0)

您可能想要添加一个httpInterceptor,并按照类似问题this answer中的描述添加Access-Control标头