![](/img/trans.png)
[英]Access to XMLHttpRequest from origin 'http://localhost:4200' has been blocked by CORS policy (Angular, WebApi)
[英]Access to xmlhttprequest at from origin has been blocked by cors policy in Angular 6
我正在為我的服務器端項目使用Asp.Net Core Boilerplate 框架。 用於客戶端項目的Angular 6 。 服務器端項目工作沒有任何錯誤。 (顯示 Swagger API - 並且 API 也在工作)
Angular 項目沒有任何編譯錯誤。 當使用谷歌瀏覽器運行 angular 項目時,( http://localhost:4200/ )它顯示以下錯誤消息。
瀏覽器控制台顯示:-
CORS 策略阻止了在“ http://server.projectName.lk//AbpUserConfiguration/GetAll ”處訪問 XMLHttpRequest 來自源“ http://localhost:4200 ”:對預檢請求的響應未通過訪問控制檢查:請求的資源上不存在“Access-Control-Allow-Origin”標頭。
當單擊“ http://server.projectName.lk//AbpUserConfiguration/GetAll ”鏈接時,它會在另一個選項卡中打開並顯示以下錯誤,
非常感謝您解決此問題的想法..
注意:以前的任何問題都沒有給我一個解決方案。
這是您收到的針對此問題的調試錯誤日志
> The thread 0x54b0 has exited with code 0 (0x0).
> Microsoft.AspNetCore.Hosting.Internal.WebHost:Information: Request
> starting HTTP/1.1 OPTIONS
> http://localhost:21021/AbpUserConfiguration/GetAll 0
> Microsoft.AspNetCore.Cors.Infrastructure.CorsService:Information: CORS
> policy execution failed.
> Microsoft.AspNetCore.Cors.Infrastructure.CorsService:Information:
> Request origin http://localhost:4200 does not have permission to
> access the resource.
> Microsoft.AspNetCore.Hosting.Internal.WebHost:Information: Request
> finished in 311.689ms 204
> Microsoft.AspNetCore.Mvc.Internal.ControllerActionInvoker:Information:
> Route matched with {action = "Index", controller = "Home", area = ""}.
> Executing action San.BA.Web.Host.Controllers.HomeController.Index
> (San.BA.Web.Host) The program '[21292] dotnet.exe' has exited with
> code -1 (0xffffffff).
跨源資源共享(CORS)是一種W3C標准,允許服務器放寬同源策略。 使用CORS,服務器可以明確地允許一些跨源請求,同時拒絕其他請求。 CORS比早期技術(如JSONP)更安全,更靈活。 本主題說明如何在ASP.NET Core應用程序中啟用CORS。
由於服務器端的CORS策略失敗,這種情況正在發生。 因為您需要在主機Project中的appsettings.json文件中添加客戶端URL。
"App": { ...... "CorsOrigins": " http://localhost:4200 " ...... }
有關更多信息,請查看以下URL:
https://docs.microsoft.com/en-us/aspnet/core/security/cors?view=aspnetcore-2.2
只需進入 web.config 文件並粘貼下面的代碼
系統.web服務器
<httpProtocol>
<customHeaders>
<add name="Access-Control-Allow-Origin" value="*" />
<add name="Access-Control-Allow-Headers" value="Content-Type" />
<add name="Access-Control-Allow-Methods" value="GET, POST, PUT, DELETE, OPTIONS" />
</customHeaders>
</httpProtocol>
我知道這是一個老問題,但認為這將有助於任何將面臨這個問題的人。 當我們將基於ASP.NET WebAPI的應用程序移動到AWS時,我們最近遇到了同樣的錯誤。 事實證明,負載均衡器(ALB)的超時時間為1分鍾,這意味着如果任何API需要超過一分鍾,ALB就會取消請求,奇怪的是Chrome會提供與CORS相關的錯誤。 在IIS HTTPERR日志中,此類請求標記為Request_Cancelled。 由於我們的一個API花了一分多鍾,我們不得不改變ALB中的超時配置,事情開始順利進行! Chrome為什么稱它為CORS,這是一個謎!
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.