Angular对不同域的webAPI的调用被转换为OPTIONS

本文关键字:转换 OPTIONS 调用 webAPI Angular | 更新日期: 2023-09-27 18:01:35

我正在使用asp.net WebAPI和Angular。当我从Angular调用到我的WebAPI上的一个方法时,我在Chrome中得到一个错误(它在IE中工作得很好),我可以看到Fiddler的调用是作为"OPTIONS"(我只使用$http)。post和$http.get),在IE中它是作为post或get生成的。

我已经尝试配置一个头发送请求('Content-Type': 'text/plain'),然后它在Chrome中工作正常。但问题是,我正在使用的授权,也在头部,当我在头部添加授权,内容类型的黑客不再工作了。

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

有没有人有解决这个问题的办法?

提前感谢:-)

Angular对不同域的webAPI的调用被转换为OPTIONS

您是否也在Global中添加了代码?asax的Application_Start方法,当你使用cors?不只是在action上添加EnableCorsAttribute

GlobalConfiguration.Configuration.EnableCors();

或者您不需要使用cors库,它也用于在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>

你可能想要添加一个httpInterceptor,并添加访问控制头描述在这个类似问题的答案