我在ASP.NET CORE的WebApi中遇到了CORS问题,当我使用我的客户端发起HTTP GET请求时,出现了以下错误:
Cross-Origin Request Blocked: The Same Origin Policy disallows reading the remote resource at https://service.staging.domain.com/application-api-staging/account. (Reason: CORS header ‘Access-Control-Allow-Origin’ missing).
Cross-Origin Request Blocked: The Same Origin Policy disallows reading the remote resource at https://service.staging.domain.com/application-api-staging/account. (Reason: CORS request did not succeed
https://service.staging.domain.com/application-api-staging 是我的WebAPI基础地址,https://client.staging.domain.com 是我的Web客户端地址。
当我检查 Firefox 控制台时,我看到以下的请求和响应头:
响应头:
HTTP/1.1 401 Unauthorized
Server: nginx/1.10.3
Date: Fri, 10 Apr 2020 14:55:31 GMT
Content-Type: application/json; charset=utf-8
Content-Length: 61
Connection: keep-alive
X-DNS-Prefetch-Control: off
X-Frame-Options: SAMEORIGIN
Strict-Transport-Security: max-age=15552000; includeSubDomains
X-Download-Options: noopen
X-Content-Type-Options: nosniff
X-XSS-Protection: 1; mode=block
ETag: W/"3d-nALmWVEo7YlT78MufcqgeUavvX4"
请求头部
Host: service.staging.domain.com
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:75.0) Gecko/20100101 Firefox/75.0
Accept: */*
Accept-Language: fr-FR,fr;q=0.8,en-US;q=0.5,en;q=0.3
Accept-Encoding: gzip, deflate, br
Access-Control-Request-Method: GET
Access-Control-Request-Headers: authorization,content-type,tenant
Referer: https://client.staging.domain.com/application/
Origin: https://client.staging.domain.com
Connection: keep-alive
在我的Web API的startup.cs文件中,我配置了CORS:
readonly string MyAllowSpecificOrigins = "_myAllowSpecificOrigins";
services.AddCors(options => {
options.AddPolicy(MyAllowSpecificOrigins,
builder => {
builder
.AllowAnyOrigin()
.AllowAnyHeader()
.AllowAnyMethod();
});
});
app.UseCors(MyAllowSpecificOrigins)
在我的控制器中。
accountController.cs
[EnableCors("_myAllowSpecificOrigins")]
当我在本地使用客户端 Web 和 WebAPI 进行测试时,
客户端 Web -> http://localhost:4200
WebApi -> https://localhost:44354
在这种情况下,我可以发送请求,没有问题...它工作正常。
但是在第二种情况下:
客户端 Web -> http://localhost:4200
WebApi -> https://service.staging.domain.com/application-api-staging
在这种情况下,我有一个 CORS 问题,无法正常工作。
同样的情况也出现在客户端 Web 和 WebApi 部署的第三种情况中:
客户端 Web -> https://client.staging.domain.com/application/
WebApi -> https://service.staging.domain.com/application-api-staging
同样,我有一个 CORS 问题,无法正常工作。
在我的问题的开头看到了相同的错误消息。
为什么我在 staging url 上遇到了 CORS 错误?我该如何解决它?
这是一个 Nginx 问题吗?
感谢您的帮助。
更新:
WebAPI 和 Web 客户端在 Linux 服务器上运行,所以我没有使用 IIS,而是使用了 NGINX。
我应该如何配置 NGINX?或者这可能是 asp.net core 配置的问题吗?