在 IIS 上启用 CORS 预检 ASP.NET

Enable CORS preflight ASP.NET on IIS

我只有一个 ASP.NET 应用程序的二进制文件,我正试图在本地启动它。我在尝试提出它时遇到了一些 CORS 问题。

Access to XMLHttpRequest at 'http://xx.xx.xx.xx:8080/webapi/' from origin 
'http://xx.xx.xx.xx:8089' has been blocked by CORS policy: 
Response to preflight request doesn't pass access control check: 
No 'Access-Control-Allow-Origin' header is present on the requested resource.

我尝试了几种方法,包括从此处在 IIS 上安装 CORS 模块 https://www.iis.net/downloads/microsoft/iis-cors-module

我也尝试更改我的 Web.Config 以添加以下内容。我想要做的只是让它开始工作,所以我想允许所有请求通过。

<system.webServer>
  <cors enabled="true">
    <add origin="*" allowed="true" />
    <add origin="http://*" allowed="true" />
  </cors>

但我仍然遇到同样的错误。奇怪的是,webapi 和 ASP.NET 客户端都在同一台机器上的不同端口 8080 和 8089.

首先你要确定你已经成功安装了cors模块,然后你需要在应用的web.config中添加如下配置:

 <system.webServer> 
   <cors enabled="true">
    <add origin="*" allowed="true" />
  </cors>
  </system.webServer>

此配置节点在配置节点下

如果还是没有解决,也可以在Global文件中加入如下代码解决跨域问题:

protected void Application_BeginRequest(object sender, EventArgs e)
        {
            HttpContext.Current.Response.AddHeader("Access-Control-Allow-Origin", "*");

            if (HttpContext.Current.Request.HttpMethod == "OPTIONS")

            {
                HttpContext.Current.Response.AddHeader("Access-Control-Allow-Methods", "*");

                HttpContext.Current.Response.AddHeader("Access-Control-Allow-Headers", "*");

                HttpContext.Current.Response.End();
            }

        }