【问题标题】:CORS policy "Access-Control-Allow-Origin" IISCORS 策略“访问控制允许来源”IIS
【发布时间】:2019-12-18 03:23:00
【问题描述】:

我有 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 策略阻止:当请求的凭据模式为“包含”时,响应中的“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'。”

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

【问题讨论】:

  • 查看更新以验证请求标头以设置正确的Origin

标签: angular iis cors


【解决方案1】:

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

在浏览器中开发者工具>网络检查请求标头并验证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" />

【讨论】:

  • 不幸的是它不起作用。我试图在 IIS 上像实体框架一样移动主机角度,但无济于事。现在我收到 400 错误请求。
猜你喜欢
  • 2020-06-06
  • 2021-11-03
  • 2021-08-07
  • 2021-12-24
  • 2019-02-09
  • 2016-06-02
  • 2019-09-16
  • 2020-11-02
  • 1970-01-01
相关资源
最近更新 更多