簡體   English   中英

從源訪問 xmlhttprequest 已被 Angular 6 中的 cors 策略阻止

[英]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).

啟動.cs文件

跨源資源共享(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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM