IIS网站下的一些错误解决方案

 

 

 

1、HTTP 错误 405.0 - Method Not Allowed 无法显示您正在查找的页面,因为使用了无效方法(HTTP 谓词)

  

       原因:IIS10 默认支持 PUT 和 DELETE 请求,但 IIS8.0 及以下版本默认不接收 PUT、DELETE 等不常见的 HTTP 谓词

  在web.config配置文件中添加配置  

复制代码
</system.webServer>
    <httpProtocol>
            <customHeaders>
                <add name="Access-Control-Allow-Origin" value="*" />
                <add name="Access-Control-Allow-Headers" value="*" />
                <add name="Access-Control-Allow-Methods" value="GET, POST, PUT, DELETE,OPTIONS" />
            </customHeaders>
        </httpProtocol>
</system.webServer>
复制代码

  如果做了正确的配置还是不行,这个时候我们可以看到错误信息拉杰提示的模块是WebDAVModule,在配置文件中添加配置移除该模块

<modules>
    <remove name="WebDAVModule" />
</modules>

 

2、IIS下网站对options请求直接返回404 

  什么是options请求

  options请求为发送非简单跨域请求前的预检请求,若该请求未正常返回,浏览器会阻止后续的请求发送。
  一般情况下,有三种方式会导致浏览器发起预检请求  

1.请求的方法不是GET/HEAD/POST
2.POST请求的Content-Type并非application/x-www-form-urlencoded, multipart/form-data 或 text/plain
3.请求中设置了自定义的header字段(如Token)

 

  浏览器发出请求但直接返回404

  若未对iis进行配置,则会导致options请求被iis直接响应返回,而不会进入到代码中。这也是Global中的Application_BeginRequest无法捕获到options请求的原因。

  1.检查webconfig中的配置,是否移除了对options请求的特殊处理
      可在iis中进行配置:[网站]-[应用程序]-[处理程序映射]

<system.webServer>
  <handlers>
    <remove name="OPTIONSVerbHandler" />
  </handlers>
</system.webServer>

  2.检查iis服务器是否安装了UrlScan,若安装了请检查AllowVerbs中是否包含了options
     可在iis中查看是否安装了UrlScan [网站]-[ISAPI筛选器] (可以找到UrlScan安装路径)  
  image

  UrlScan的配置文件为UrlScan.ini (C:\Windows\System32\inetsrv\urlscan\UrlScan.ini)
  将OPTIONS从[DenyVerbs]中移除并添加到[AllowVerbs]下

  3.在Global的Application_BeginRequest实践中直接响应options请求

复制代码
//允许所有的options请求,直接返回200状态码
private void Application_BeginRequest(object sender, EventArgs e)
{
    if (HttpContext.Current.Request.HttpMethod == "OPTIONS")
    {
        HttpContext.Current.Response.StatusCode = 200;
        HttpContext.Current.Response.Headers["Access-Control-Allow-Origin"] = HttpContext.Current.Request.Headers["origin"];
        HttpContext.Current.Response.End();
    }
}
复制代码

  4.在webconfig中的Allow-Method中添加上options

复制代码
<system.webServer>
    <httpProtocol>
      <customHeaders>
        <add name="Access-Control-Allow-Methods" value="OPTIONS,POST,GET" />
        <add name="Access-Control-Allow-Headers" value="x-requested-with,aspxauth" />
        <add name="Access-Control-Allow-Credentials" value="true" />
      </customHeaders>
    </httpProtocol>
</system.webServer>
复制代码

 

3、无法响应此网站,响应时间过长

   设置出站、入站规则

        出站入站规则在防火墙 里面设置(高级)

  

  

 

 

  

 

 

 

 

 

 

 

 

 

  

posted @   Haoeaoi  阅读(745)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
点击右上角即可分享
微信分享提示