HTTP 405 错误 方法不被允许 (Method not allowed)
出现405原因
请求行中指定的请求方法不能被用于请求相应的资源。该响应必须返回一个Allow 头信息用以表示出当前资源能够接受的请求方法的列表。鉴于 PUT, 方法会对服务器上的资源进行写操作,因而绝大部分的网页服务器都不支持或者在默认配置下不允许上述请求方法,对于此类请求均会返回405错误。
其实就是说你访问了不是你能访问了,例如你使用post方法访问静态资源,Apache、IIS、Nginx等绝大多数web服务器,都不允许静态文件响应POST请求
那么我的这个问题是在哪里呢?
super.doGet(req,resp);我忘记注释掉了...........................
以前只知道要注释掉,但不知道是为什么,今天我点进去看了一下里面是怎么写的..........
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { String protocol = req.getProtocol(); String msg = lStrings.getString("http.method_get_not_supported"); if (protocol.endsWith("1.1")) { resp.sendError(405, msg); } else { resp.sendError(400, msg); } }
你看,这里,只要http 协议是1.1就返回405,不然就返回400,反正就是直接报错....
解决 405 错误 一般方法
405 错误经常和 POST 方法同时出现。 您可能在您的网站上尝试引入某种输入表格,但并非所有的互联网服务供应商 (ISPs) 都 允许处理该表格所需的 POST 方法。
所有 405 错误都可以追综到 Web 服务器设置和控制访问网站内容的安全管理,因此您的 ISP 应该很容易地予以解释。
解决 405 错误 CheckUpDown
发现类似 405 的错误。这个错误应该永远不会发生在您的 CheckUpDown 帐户上。 如果出现了, 则通常表明我方系统或是管理您网站的 Web 服务器系统在编程上有缺陷。 我们只使用 GET 方法,所有 Web 服务器都应允许(否则, 任何人无论如何都不能看到您的网站) 。
只要您遇到 405 错误,就请与我们联系(最好通过电子邮件) - 您自己无法解决此类错误。我们必须和您的 ISP 及 Web 服务器软件供应商联络,以确认产生该错误的确切原因
HTTP 循环中的 405 错误
任何客户端 ( 例如您的浏览器或我们的 CheckUpDown 机器人 ) 在和您的网络服务器通讯时,都需经过以下循环:
从您站点的 IP 名称 ( 即您的网页地址 - URL, 不带起始的 ‘http://') 获得一个 IP 地址。这个对应关系 ( 即由 IP 名称向 IP 地址转换的对应关系 ) 由域名服务器 (DNSs) 提供。
打开一个 IP socket ( 套接字 ) 连接到该 IP 地址。
通过该 socket 写 HTTP 数据流。
从您的网络服务器接受响应的 HTTP 数据流。该数据流包括状态编码, 其值取决于 HTTP 协议 。 解析 该数据流得到 状态编码 和其他有用信息。
该错误在以上所述的最后一步生成,即当客户端收到 HTTP 状态编码 并识别其为 ‘405’ 时。