Hep*_*ram 5 asp.net nginx cors asp.net-web-api asp.net-core
我在 ASP.NET CORE 中的 WebApi 遇到 CORS 问题,当我使用客户端发出 HTTP GET 请求时,出现以下错误:
\n\nCross-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 \xe2\x80\x98Access-Control-Allow-Origin\xe2\x80\x99 missing).\n\nCross-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\nRun Code Online (Sandbox Code Playgroud)\n\nhttps://service.staging.domain.com/application-api-staging是我的 Web 客户端的 WebAPI 基础\n https://client.staging.domain.com。
当我检查 Firefox 控制台时,我有一个请求和响应标头如下:
\n\n响应标头
\n\nHTTP/1.1 401 Unauthorized\nServer: nginx/1.10.3\nDate: Fri, 10 Apr 2020 14:55:31 GMT\nContent-Type: application/json; charset=utf-8\nContent-Length: 61\nConnection: keep-alive\nX-DNS-Prefetch-Control: off\nX-Frame-Options: SAMEORIGIN\nStrict-Transport-Security: max-age=15552000; includeSubDomains\nX-Download-Options: noopen\nX-Content-Type-Options: nosniff\nX-XSS-Protection: 1; mode=block\nETag: W/"3d-nALmWVEo7YlT78MufcqgeUavvX4"\nRun Code Online (Sandbox Code Playgroud)\n\n请求标头
\n\nHost: service.staging.domain.com\nUser-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:75.0) Gecko/20100101 Firefox/75.0\nAccept: */*\nAccept-Language: fr-FR,fr;q=0.8,en-US;q=0.5,en;q=0.3\nAccept-Encoding: gzip, deflate, br\nAccess-Control-Request-Method: GET\nAccess-Control-Request-Headers: authorization,content-type,tenant\nReferer: https://client.staging.domain.com/application/\nOrigin: https://client.staging.domain.com\nConnection: keep-alive\nRun Code Online (Sandbox Code Playgroud)\n\n在我的 webAPIstartup.cs 中,我配置了 CORS:\nstartup.cs
\n\nreadonly string MyAllowSpecificOrigins = "_myAllowSpecificOrigins";\n\nservices.AddCors(options => {\n options.AddPolicy(MyAllowSpecificOrigins,\n builder => {\n builder\n .AllowAnyOrigin()\n .AllowAnyHeader()\n .AllowAnyMethod();\n });\n});\n\napp.UseCors(MyAllowSpecificOrigins)\nRun Code Online (Sandbox Code Playgroud)\n\n在我的控制器中。
\n\naccountController.cs
\n\n[EnableCors("_myAllowSpecificOrigins")]\nRun Code Online (Sandbox Code Playgroud)\n\n当我在本地测试我的客户端 Web 和 WebAPI 时,\n客户端 Web -> http://localhost:4200 \nWebApi -> https://localhost:44354 \n在这种情况下,我可以发出请求,没有问题。 .. 这行得通
\n\n但在第二种情况下:\nclient web -> http://localhost:4200 \nWebApi -> https://service.staging.domain.com/application-api-staging \n在这种情况下,我遇到了 CORS 问题,不行
\n\n第三种情况与 Web 客户端和 WebApi 部署相同\nclient web -> https://client.staging.domain.com/application/ \nWebApi -> https://service.staging.domain.com/application- api-staging \n同样,我有 CORS 问题,不起作用
\n\n从我的错误消息问题的开头可以看到同样的错误。
\n\n为什么我的 url staging 出现 CORS 错误?和/或我可以解决这个问题吗?\n这是一个 nginx 问题吗?
\n\n感谢您的帮助。
\n\n更新
\n\nWebAPI 和 Webclient 在 Linux 服务器上工作,所以我不使用 IIS,但使用 NGINX。
\n\n我如何配置NGINX,或者可能是asp.net核心配置问题?
\n试试这个,对我有用
在launchSettings.json 中的iisSettings 下,将anonymousAuthentication 和windowsAuthentication 设置为true。
"iisSettings": {
"windowsAuthentication": true,
"anonymousAuthentication": true,
"iisExpress": {
"applicationUrl": "http://localhost:8791/",
"sslPort": 0
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
7165 次 |
| 最近记录: |