CORS政策“ Access-Control-Allow-Origin” IIS

时间:2019-08-10 22:21:16

标签: angular iis cors

我有angular,Entity Framework和MS SQL Server。我需要在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”。”

在提琴手中,我可以看到: 安全    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-找不到 您要查找的资源已被删除,名称已更改或暂时不可用。 ” 现在好点了吗? 下一步可能是什么?

1 个答案:

答案 0 :(得分:0)

如果您的localhost服务器在特定端口上运行,则必须将其包含在Access-Control-Allow-Origin中,例如http://localhost:8080

在浏览器中开发者工具>网络,检查请求标头并验证Referer。这是应该为Access-Control-Allow-Origin设置的URL。

开发人员工具>网络

Developer Tools > Network: Request headers

配置

<add name="Access-Control-Allow-Origin" value="http://localhost:8080" />

此外,您可能需要设置Access-Control-Allow-Credentials

<add name="Access-Control-Allow-Credentials" value="true" />