向 ASP.NET Web API 发送请求时出现 CORS 错误

Posted

技术标签:

【中文标题】向 ASP.NET Web API 发送请求时出现 CORS 错误【英文标题】:CORS error when sending request to ASP.NET Web API 【发布时间】:2019-09-09 14:51:08 【问题描述】:

我正在尝试从 Angular 应用程序和 ASP.NET Web API 发送请求,它们都在 localhost 的两个不同端口上运行。当从 Angular 应用程序(前端)向 Web API 发送请求时,我收到一个 CORS 错误,即“请求的资源上不存在‘Access-Control-Allow-Origin’标头”。

我尝试了很多方法来尝试解决此问题,例如在 WebApiConfig 类中启用 cors、在 web.config 中自定义标头以及拦截飞行前检查,但问题仍然存在。

WebApiConfig.cs

var corsAttr = new EnableCorsAttribute("*", "*", "*");
config.EnableCors(corsAttr);

Web.config

<system.webServer>
    <httpProtocol>
    <customHeaders>
        <add name="Access-Control-Allow-Origin" value="*" />
        <add name="Access-Control-Allow-Headers" value="Content-Type, 
            Access-Control-Allow-Headers, Authorization, X-Requested- 
            With, X- AuthToken" />
        <add name="Access-Control-Allow-Methods" value="GET, POST, PUT, 
                 DELETE, OPTIONS" />
   </customHeaders>
   </httpProtocol>
   <modules runAllManagedModulesForAllRequests="true">
     <add name="HandleOptions" type="OptionsModule" />
   </modules>
 </system.webServer>

【问题讨论】:

看看***.com/questions/18619656/enable-cors-in-web-api-2 Mosharaf Hossain 答案对我有用 也可以看看this。 @AmitBaranes 尝试过,但错误仍然出现 @Nik 那是我阅读的第一份文件 【参考方案1】:

您请求的站点似乎不允许从任何其他域访问任何资源。表示您请求的站点尚未实施 CORS(跨源请求共享)。

临时解决方案: 您可以使用代理 (https://crossorigin.me/https://google.com),所有您需要做的 --> 只需在您的 url 之前附加 https://crossorigin.me/ 并了解更多详细信息

检查HERE。

第二个永久解决方案: 您必须为您请求资源的站点实施跨源资源共享。

第三个: 第三是您可以从浏览器中禁用 CORS (https://alfilatov.com/posts/run-chrome-without-cors/)。

查看这些网站了解更多详情1,2

【讨论】:

问题是我在我的api上实现了CORS,但是还是不行。 请检查这个:***.com/questions/29024313/… 我已经尝试了所有这些,但问题仍然存在 ***.com/questions/42199757/… 最后一个网址很有帮助,因为我无法在您的代码中找到任何问题。

以上是关于向 ASP.NET Web API 发送请求时出现 CORS 错误的主要内容,如果未能解决你的问题,请参考以下文章

向 web api 发送 ajax 请求时出现 401 Unauthorized

向本地服务器发送请求时出现 Flutter Web XMLHttpRequest 错误

无法使用javascript向ASP.NET web api Controller发送http POST请求

从 asp.net 核心应用程序发出 DELETE 请求时出现 405 错误

尝试向 API 发送 POST 请求时出现属性错误 - Django

将 asp.net core web api 部署到 IIS 7.5 时出现 500 错误