【问题标题】:CORS settings for IIS 7.5IIS 7.5 的 CORS 设置
【发布时间】:2015-02-12 21:53:34
【问题描述】:

有人可以帮助我,转换以下代码以在 IIS 7.5 中的 web.config 中使用,以及我应该在 web.config 文件中的哪个位置放置每段代码?

# Always set these headers.
Header always set Access-Control-Allow-Origin "*"
Header always set Access-Control-Allow-Methods "POST, GET, OPTIONS, DELETE, PUT"
Header always set Access-Control-Max-Age "1000"
Header always set Access-Control-Allow-Headers "x-requested-with, Content-Type, origin, authorization, accept, client-security-token"

# Added a rewrite to respond with a 200 SUCCESS on every OPTIONS request.
RewriteEngine On
RewriteCond %{REQUEST_METHOD} OPTIONS
RewriteRule ^(.*)$ $1 [R=200,L]

【问题讨论】:

  • 根据网站的建议 - enable-cors.org/server_iis7.html 我已将 添加到我的 web.config 中。但我在 Firefox 中收到以下消息 - Cross-Origin Request Blocked: The Same Origin Policy disallows reading the remote resource at lrpspsprd02.lhl.co.nz/ZFP/Dicom/….这可以通过将资源移动到同一域或启用 CORS 来解决。

标签: asp.net iis iis-7.5 cors options


【解决方案1】:

如果你要求这个解决CORS问题,你可以按照下面的这个解决方案。

注意:在添加所有这些之前,您应该考虑安全问题。

  1. 将此添加到您的 web.config 文件中:

    <system.webServer>
      <httpProtocol>
        <customHeaders>
          <add name="Access-Control-Allow-Origin" value="*" />
          <add name="Access-Control-Allow-Methods" value="GET, PUT, POST, DELETE, HEAD, OPTIONS" />
          <add name="Access-Control-Allow-Credentials" value="true"/>
          <add name="Access-Control-Allow-Headers" value="X-Requested-With, origin, content-type, accept" />
        </customHeaders>
      </httpProtocol>
    </system.webServer>
    
  2. 如果你有内容类型 ajax 调用中的参数,或者您正在执行 PUT 请求。那些 被视为 PreFlight 请求。Preflight 请求正在执行 OPTION 发送主请求之前的请求(PUT、DELETE 等)。您可以 将以下方法添加到您的 global.asax 文件以成功通过 OPTION 过程:

    protected void Application_BeginRequest()
    {
        if (Request.Headers.AllKeys.Contains("Origin") && Request.HttpMethod == "OPTIONS")
        {
            Response.Flush();
        }
    }
    

要了解有关预检请求的更多信息,您可以查看here

对于解决方案 2,您可以从here 获得详细信息

【讨论】:

  • 我必须在 前添​​加以下行以防止重复输入错误:
  • 感谢@zehra Subas。对我来说,我只需要添加这两行标题,Access-Control-Allow-Origin,Access-Control-Allow-Headers:
  • 欢迎 :) @SotirisZegiannis
  • 还有一个IIS CORS模块,使用&lt;cors&gt;标签,更多信息可以在docs.microsoft.com/en-us/iis/extensions/cors-module/…找到
【解决方案2】:

需要考虑一些更新,因为 Chrome 现在添加了 strict-origin-when-cross-origin 作为默认的referrer-policy,所以如果你没有在 web.config 中设置 referrer 策略,你可能仍然会遇到CORS 问题。这是针对远程服务器测试 localhost 测试程序时对我有用的设置(不建议将这些设置用于生产):

<system.webServer>
   <httpProtocol>
     <customHeaders>
         <add name="Referrer-Policy" value="no-referrer" />
         <add name="Access-Control-Allow-Origin" value="*" />
         <add name="Access-Control-Allow-Methods" value="GET, PUT, POST, DELETE, HEAD, OPTIONS" />
         <add name="Access-Control-Allow-Credentials" value="true"/>
         <add name="Access-Control-Allow-Headers" value="X-Requested-With, origin, content-type, accept" />
     </customHeaders>
   </httpProtocol>
</system.webServer>

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-06-08
    • 1970-01-01
    • 2016-08-12
    • 2014-05-23
    相关资源
    最近更新 更多