c# - ASP.NET Core 2.2 CORS 没有“Access-Control-Allow-Origin”标头
问题描述
我无法使用 ASP.NET Core 2.2 Web api。
下面的这段 javascript 代码运行良好,我可以让所有客户都很好
fetch('https://10.20.0.20:8081/api/clients/list').then(data => { data.json().then(dt=>{console.log(dt)}) }).catch(error => { console.log(error)});
但是这个不行
fetch('https://10.20.0.20:8081/api/clients/list',{ "headers": {"content-type": "application/json"}}).then(data => { data.json().then(dt=>{console.log(dt)}) }).catch(error => { console.log(error)});
嗯......这是我在 Startup.cs 的 ConfigureServices 方法中所拥有的
services.AddCors(setup => setup.AddPolicy("AllowAll", builder => builder.AllowAnyHeader().AllowAnyMethod().AllowAnyOrigin().AllowCredentials()));
我在 Startup.cs 的 Configure 方法之后的第一行
app.UseCors("AllowAll");
当我在上面评论这行时,两个 fetch 停止工作。
我做了这个小测试只是因为我使用 Angular 来使用这个 API,并且我面临同样的问题。
错误信息:
CORS 策略已阻止从源“ https://10.20.0.20:8080 ”获取“ https://10.20.0.20:8081/api/clients/Listar ”的访问权限:对预检请求的响应未通过访问控制检查:请求的资源上不存在“Access-Control-Allow-Origin”标头。如果不透明的响应满足您的需求,请将请求的模式设置为“no-cors”以获取禁用 CORS 的资源。
我在另一个 IIS 工作中有相同的应用程序/代码。我想这与 IIS 有关
编辑-> 2020-05-16
我做了一个中间件来检查所有带有context.Request.Method的请求方法。在我的本地机器上,我得到了 GET 和 OPTIONS 方法,但在这个服务器上,我只得到了 GET。我想问题出在这台服务器上。
解决方案
这就是我在 Startup.cs 的 ConfigureServices 方法中所拥有的
services.AddCors(setup => setup.AddPolicy("AllowAll", builder => builder.AllowAnyHeader().AllowAnyMethod().AllowAnyOrigin().AllowCredentials()));
在您的代码中,我们可以发现您同时配置了AllowAnyOrigin
和AllowCredentials
方法,这会导致 CORS 服务返回无效的 CORS 响应。
请修改您的代码以启用特定来源,如下所示。
services.AddCors(setup =>
setup.AddPolicy("AllowAll", builder =>
builder.WithOrigins("https://10.20.0.20:8080")
.AllowAnyHeader()
.AllowAnyMethod()
.AllowCredentials())
);
我在另一个 IIS 工作中有相同的应用程序/代码。我想这与 IIS 有关
请检查您是否为您的 IIS 站点启用了 Windows 身份验证,您可以尝试为您的站点安装IIS CORS 模块并进行配置。
推荐阅读
- python - 错误(外部 IP):无效的 HTTP_HOST 标头“check.proxyradar.com”
- java - 在 Flutter 中构建 apk 后,应用程序崩溃 pubnub 订阅
- arrays - 如何通过onClick函数切换评论组件,反应js
- c++ - 使用未来的 C++ 从线程输出
- mysql - 有没有办法知道在特定日期和时间之后添加到 SQL 数据库中的记录数
- php - PHP脚本将mysql列复制到另一个表
- django - 有什么简单的方法可以在一行中获取所有输入吗?
- redux-saga - Redux saga - yield 不返回动作
- python - 我们可以在 pandas 的直方图中定义我们自己的 bin
- mysql - 如何在 DRF 中左连接模型(或)表