【问题标题】:CORS between Dev IISEXPRESS and IIS开发 IISEXPRESS 和 IIS 之间的 CORS
【发布时间】:2021-10-23 14:43:35
【问题描述】:

我在 ASP netcore 3.1 MVC API 上有一个 cors 实现。它适用于开发。

在 startup.cs 中(我基本上接受任何来源以尝试使其正常工作)

app.UseCors(builder=>{
          builder.SetIsOriginAllowed(origin={
          var host=new Uri(origin).Host;
          return true; ///Accept any
          })
          .AllowAnyMethod()
          .AllowAnyHeader()
          .AllowCredentials()
   })

我有一套标准的控制器,其中一个是允许匿名身份验证的用户。

当我在 IISEXPRESS 上运行时,一切正常

当我在类似生产环境的 IIS 上运行时,我收到一系列错误,以 No Headers for Allow-Control-Allow-Origin 开头

我尝试设置 web.config 以使用带有四个响应的自定义标头

<httpProtocol>
    <customHeaders>
      <add name="Access-Control-Allow-Origin" value="https://MYDOMAIN" />
      <add name="Access-Control-Allow-Headers" value="Content-Type" />
      <add name="Access-Control-Allow-Methods" value="OPTIONS" />
      <add name="Access-Control-Allow-Credentials" value="true" />
   </customHeaders>
 </httpProtocol>

但现在我得到 Response to preflight request doesn't pass access control check: It does not have HTTP ok status.

为什么必须做这些,因为它在开发中有效? 为什么 IIS 似乎只允许一个域用于 CORS。不是所有 CORS 都允许多个来源吗?

为什么我找不到解决方案。

这里有一些图片 来自 IIS 服务器的错误:

网络请求 开发网络 带有 IIS 的服务器

【问题讨论】:

  • 这与许多示例一样,将起源限制在域的范围内。 COPRS是允许不同的域。似乎通配符不起作用。该代码还处理cors i并在dev中工作。他们是阻止 IIS 妨碍的方法吗?
  • 我怀疑你是否试一试,因为其他人确实在多个域上取得了成功,stackoverflow.com/a/66461238/11182。此外,您的屏幕截图在预检请求中显示 401,这表明您启用了基于质询的身份验证(Windows/Basic 或其他)。该 401 只能由 IIS CORS 模块解决,您可以在其中配置预检请求以允许无需身份验证。
  • 感谢 401 是个好地方。我会尝试。我需要在服务器上为 cors 安装任何东西吗?只是想知道为什么我需要这样做,因为代码管理着整个 cors 的事情
  • 你安装了IIS CORS Module,如果没有,请尝试安装?

标签: asp.net-core iis cors


【解决方案1】:

为 IIS 安装了 iis cors 扩展,它工作正常。

【讨论】:

    猜你喜欢
    • 2020-09-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-12-12
    • 1970-01-01
    • 2017-06-17
    • 2013-02-23
    • 1970-01-01
    相关资源
    最近更新 更多