首页  >  文章  >  web前端  >  为什么启用 CORS 时 IIS7 返回 405 Method Not allowed 错误?

为什么启用 CORS 时 IIS7 返回 405 Method Not allowed 错误?

Linda Hamilton
Linda Hamilton原创
2024-10-28 19:52:02996浏览

Why Does IIS7 Return a 405 Method Not Allowed Error When Enabling CORS?

在 IIS7 上启用跨源资源共享

为了允许异步资源请求,需要在 IIS7 上启用跨源资源共享 (CORS)跨不同来源制作,克服浏览器安全限制。但是,当 IIS7 在成功的 200 响应之前返回 405 Method Not Allowed 错误时,可能会出现问题。

解决 405 Method Not allowed 错误

405 错误通常发生这种情况是因为 IIS7 处理 HTTP OPTIONS 响应,该响应先于实际请求,而不是将其转发到您的应用程序。要更正此问题:

  1. 导航到 IIS7 中站点的处理程序映射。
  2. 找到并双击“OPTIONSVerbHandler”条目。
  3. 更改“ProtocolSupportModule”到“IsapiHandler”。
  4. 将可执行文件路径设置为:
    %windir%Microsoft.NETFrameworkv4.0.30319aspnet_isapi.dll。

通过这些更改,IIS7 将转发 HTTP您的应用程序的 OPTIONS 动词。

替代解决方案:在 BeginRequest 中处理 OPTIONS 动词

或者,您可以在应用程序的 BeginRequest 方法中手动处理 HTTP OPTIONS 动词:

<code class="c#">protected void Application_BeginRequest(object sender, EventArgs e)
{
    HttpContext.Current.Response.AddHeader("Access-Control-Allow-Origin", "*");

    if (HttpContext.Current.Request.HttpMethod == "OPTIONS")
    {
        // Handle HTTP OPTIONS pre-flight request
        HttpContext.Current.Response.AddHeader("Access-Control-Allow-Methods", "GET, POST, PUT, DELETE");
        HttpContext.Current.Response.AddHeader("Access-Control-Allow-Headers", "Content-Type, Accept");
        HttpContext.Current.Response.AddHeader("Access-Control-Max-Age", "1728000");
        HttpContext.Current.Response.End();
    }
}</code>

通过实施其中一种方法,您可以在 IIS7 上启用 CORS 并解决 405 错误,以确保跨源请求成功。

以上是为什么启用 CORS 时 IIS7 返回 405 Method Not allowed 错误?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn