首页 > 解决方案 > IIS CORS,在 JavaScript 获取请求上

问题描述

我在配置不同axiosfetch配置不同时遇到 CORS 问题,这些是我的代码:

对于fetch

fetch(url, {
    method: 'GET',
    mode: 'cors',
    headers: {
        Authorization: token,
        'Access-Control-Allow-Origin': '*'}
})
  .then(response =>
    response.ok ? response : Promise.reject<Response>(response)
  )
  .then(response => response.json())
  .then(data => data.Token)

或为axios

axios.get(url, {
  headers: {
    Authorization: token,
    'Access-Control-Allow-Origin': '*'
  },
  crossDomain: true
})
.then((response) => {
  console.log("sendValidateJWTRequest response", response);
  return response.data
}, (error) => {
  console.log(error);
  return Promise.reject(error);
})

在我的 web.config 中,我有:

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
    <system.webServer>
        <httpProtocol>
            <customHeaders>
                <add name="Access-Control-Allow-Origin" value="*" />
            </customHeaders>
        </httpProtocol>
    </system.webServer>
</configuration>

我还在浏览器中:

在此处输入图像描述

我还应该尝试什么?

标签: iisaxioscors

解决方案


正如Lex Li发表的评论,IIS CORS 是处理 CORS 问题的不错选择。一些预检请求无法正确处理。在 Asp.net Web 应用程序中,我们通常会添加一个global.asax文件以在服务器端对其进行处理。

protected void Application_BeginRequest(object sender, EventArgs e)
        {
            if (Request.Headers.AllKeys.Contains("Origin") && Request.HttpMethod == "OPTIONS")
            {
                Response.End();
            } 
}

但是,IIS Core 模块是一个更好的解决方案。
1. 在服务器端安装 IIS CORS 模块。
https://www.iis.net/downloads/microsoft/iis-cors-module
2. 这是一个通用配置,允许来自所有来源的所有请求。

    <system.webServer>
        <modules runAllManagedModulesForAllRequests="true"/>
        <directoryBrowse enabled="true"/>
        <cors enabled="true" failUnlistedOrigins="true">
            <add origin="*" allowed="true">
                <allowHeaders allowAllRequestedHeaders="true"/>
            </add>
        </cors>
    </system.webServer>
</configuration>

就这样。要为特定来源自定义配置,请查看以下链接。
https://docs.microsoft.com/en-us/iis/extensions/cors-module/cors-module-configuration-reference
如果有什么我可以帮忙的,请随时告诉我。


推荐阅读