gpt4 book ai didi

iis - CORS 预检请求使用 Windows 身份验证返回 HTTP 401

转载 作者:行者123 更新时间:2023-12-03 05:56:31 25 4
gpt4 key购买 nike

我在 Google 和 Stack Overflow 上进行了大量搜索,以找到问题的解决方案,但没有任何效果。

这是我的问题:

  • 我使用 IIS 7 和一个名为 WebDEV 的特殊编程环境,该环境不允许直接操作 OPTIONS HTTP 方法。因此,所有建议使用代码进行某种服务器端请求处理的解决方案都是不可行的。

  • 我必须使用 Window 身份验证并禁用匿名访问

  • 我有一个页面使用 CORS 来 POST 到此服务器。由于此 POST 应具有 Content-type: Octet-stream,因此浏览器会发出预检。

  • 当我启用匿名访问时,一切正常(CORS 配置良好)

  • 当我禁用匿名访问时,服务器会对预检请求回复 HTTP 401 未经授权的响应,因为它不包含凭据信息。

  • 我尝试为 IIS 编写一个模块来接受这样的 OPTIONS 请求,但它不起作用(可能无法将模块正确添加到 IIS)

    public class CORSModule : IHttpModule
    {

    public void Dispose() {
    }

    public void Init(HttpApplication context)
    {
    context.PreSendRequestHeaders += delegate
    {
    if (context.Request.HttpMethod == "OPTIONS")
    {
    var response = context.Response;
    response.StatusCode = (int)HttpStatusCode.OK;
    }
    };
    }
    }

问题是:如何让 IIS 使用 HTTP 200 响应预检请求,而不启用匿名访问或编写一些服务器端代码? IIS 是否有简单的配置或现成的模块可以做到这一点?至少,将上述模块安装到 IIS 7 中的详细步骤是什么?

最佳答案

根据 AhmadWabbi 的回答,将 XML 轻松粘贴到您的 web.config 中:

<system.webServer>
<rewrite>
<rules>
<rule name="CORS Preflight Anonymous Authentication" stopProcessing="true">
<match url=".*" />
<conditions>
<add input="{REQUEST_METHOD}" pattern="^OPTIONS$" />
</conditions>
<action type="CustomResponse" statusCode="200" statusReason="Preflight" statusDescription="Preflight" />
</rule>
</rules>
</rewrite>
</system.webServer>

关于iis - CORS 预检请求使用 Windows 身份验证返回 HTTP 401,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38201776/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com