iis - IIS CORS,在 JavaScript 获取请求上
问题描述
我在配置不同axios
或fetch
配置不同时遇到 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>
我还在浏览器中:
我还应该尝试什么?
解决方案
正如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
如果有什么我可以帮忙的,请随时告诉我。
推荐阅读
- log4j2 - log4j2 和 slf4j/logback 在 anylogic 中的输出不同
- git - 是否可以在推送包含某个提交的标签时收到通知?
- c# - 如何在 C# 中更改 MetroFramework 选项卡的颜色
- javascript - 如何获得失败 api 的响应
- r - 随着时间的推移计算具有起源和演变的数值特征
- postgresql - 如何使用子查询在 PostgreSQL 中创建唯一索引?
- bash - fold:使用参数运行脚本时列数无效
- amazon-web-services - 如何使用 Terraform 附加或删除安全组的入口/出口规则?
- node.js - 静音控制台文本输入
- javascript - 在另一个网站上填写我在我的网站上输入的表格