簡體   English   中英

CORS 策略“訪問控制允許來源”IIS

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

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