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("", "", "*")]中启用它),但它没有做出任何更改。
有没有人有解决这个问题的办法?
提前感谢:-)
您是否也在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,并添加访问控制头描述在这个类似问题的答案