[英]CORS policy 'Access-Control-Allow-Origin' (Anguar 8 and Servlet)
[英]CORS policy "Access-Control-Allow-Origin" IIS
我有 angular 、Entity Framework 和 MS SQL 服務器。 我需要在 MS IIS 上設置后端,因為我需要進行域身份驗證。 不幸的是,我仍然遇到 CORS 問題。
當我在我的 web.config 文件中時:
<httpProtocol>
<customHeaders>
<add name="Access-Control-Allow-Origin" value="http://localhost" />
<add name="Access-Control-Allow-Methods" value="GET,PUT,POST,DELETE,OPTIONS" />
<add name="Access-Control-Allow-Headers" value="Content-Type" />
</customHeaders>
</httpProtocol>
我進入瀏覽器:“已被 CORS 策略阻止:‘Access-Control-Allow-Origin’標頭的值‘ http://localhost ’不等於提供的來源”
當我將其更改為:
<httpProtocol>
<customHeaders>
<add name="Access-Control-Allow-Origin" value="*" />
<add name="Access-Control-Allow-Methods" value="GET,PUT,POST,DELETE,OPTIONS" />
<add name="Access-Control-Allow-Headers" value="Content-Type" />
</customHeaders>
</httpProtocol>
我得到:“已被 CORS 策略阻止:當請求的憑據模式為 'include' 時,響應中的 'Access-Control-Allow-Origin' 標頭的值不能是通配符 '*'。由 XMLHttpRequest 發起的請求由 withCredentials 屬性控制。”
知道我應該改變什么嗎?
接下來的變化:
<httpProtocol>
<customHeaders>
<add name="Access-Control-Allow-Origin" value="" />
<add name="Access-Control-Allow-Credentials" value="true" />
<add name="Access-Control-Allow-Methods" value="GET,PUT,POST,DELETE,OPTIONS" />
<add name="Access-Control-Allow-Headers" value="Content-Type" />
</customHeaders>
</httpProtocol>
瀏覽器中的錯誤:“已被 CORS 策略阻止:‘Access-Control-Allow-Origin’標頭包含無效值‘true’。”
在提琴手中,我可以看到:Security Access-Control-Allow-Origin: true
看起來這些值沒有被添加到給定的標題中。
下一步更改:我為 IIS 安裝了 CORS 模塊,文件如下所示:
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<system.webServer>
<cors enabled="true" failUnlistedOrigins="true">
<add origin="http://localhost:4200"
allowCredentials="true"
maxAge="120">
<allowHeaders allowAllRequestedHeaders="true">
<add header="header1" />
</allowHeaders>
<allowMethods>
<add method="GET, POST" />
</allowMethods>
</add>
</cors>
</system.webServer>
</configuration>
現在瀏覽器中的答案是:“HTTP 錯誤 404.0 - 未找到您要查找的資源已被刪除、更名或暫時不可用。” 現在好點了嗎? 下一步可能是什么?
如果您的localhost
服務器在特定端口上運行,則它必須包含在Access-Control-Allow-Origin
,例如http://localhost:8080
。
在瀏覽器Developer Tools > Network 中檢查 Request 標頭並驗證Referer
。 這是應該為Access-Control-Allow-Origin
設置的 URL。
<add name="Access-Control-Allow-Origin" value="http://localhost:8080" />
此外,您可能需要設置Access-Control-Allow-Credentials
。
<add name="Access-Control-Allow-Credentials" value="true" />
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.