Php 为什么某些请求会出现HTTP 501错误?
我为自己编写了一个简单的webapp,当我在一个只允许http和https端口的地方时,可以编辑服务器上的文件 但我遇到了一个奇怪的问题 通常在保存文件时交换这些标题(机密信息已删除):Php 为什么某些请求会出现HTTP 501错误?,php,apache,.htaccess,http,http-headers,Php,Apache,.htaccess,Http,Http Headers,我为自己编写了一个简单的webapp,当我在一个只允许http和https端口的地方时,可以编辑服务器上的文件 但我遇到了一个奇怪的问题 通常在保存文件时交换这些标题(机密信息已删除): https://example.com/? 邮政/?HTTP/1.1 主持人:example.com 用户代理:Mozilla/5.0(Windows NT 6.1;rv:36.0)Gecko/20100101 Firefox/36.0 接受:text/html、application/xhtml+xml、ap
https://example.com/?
邮政/?HTTP/1.1
主持人:example.com
用户代理:Mozilla/5.0(Windows NT 6.1;rv:36.0)Gecko/20100101 Firefox/36.0
接受:text/html、application/xhtml+xml、application/xml;q=0.9,*/*;q=0.8
接受语言:胡胡,恩美国;q=0.8,胡;q=0.5,en;q=0.3
接受编码:gzip,deflate
DNT:1
推荐人:https://example.com/?path=/home/csirmazd/public_html/[…]/fs/view/login.php&view=preview
曲奇:[……]
连接:保持活力
内容类型:application/x-www-form-urlencoded
内容长度:644
[...]
HTTP/1.1 303见其他
日期:2015年3月28日星期六14:57:40 GMT
服务器:Apache/2.2.29(Unix)mod_ssl/2.2.29 OpenSSL/1.0.1e-fips mod_bwlimited/1.4
X-Powered-By:PHP/5.4.36
到期时间:1981年11月19日星期四格林威治标准时间08:52:00
缓存控制:无存储,无缓存,必须重新验证,后检查=0,预检查=0
Pragma:没有缓存
位置:?path=/home/csirmazd/public_html/[…]/fs/view/login.php&view=preview
内容长度:0
保持活动状态:超时=5,最大=100
连接:保持活力
内容类型:text/html
----------------------------------------------------------
https://example.com/?path=/home/csirmazd/public_html/[…]/fs/view/login.php&view=preview
GET/?path=/home/csirmazd/public_html/[…]/fs/view/login.php&view=preview HTTP/1.1
主持人:example.com
用户代理:Mozilla/5.0(Windows NT 6.1;rv:36.0)Gecko/20100101 Firefox/36.0
接受:text/html、application/xhtml+xml、application/xml;q=0.9,*/*;q=0.8
接受语言:胡胡,恩美国;q=0.8,胡;q=0.5,en;q=0.3
接受编码:gzip,deflate
DNT:1
推荐人:https://example.com/?path=/home/csirmazd/public_html/[…]/fs/view/login.php&view=preview
曲奇:[……]
连接:保持活力
HTTP/1.1200ok
日期:2015年3月28日星期六14:57:40 GMT
服务器:Apache/2.2.29(Unix)mod_ssl/2.2.29 OpenSSL/1.0.1e-fips mod_bwlimited/1.4
X-Powered-By:PHP/5.4.36
到期时间:1981年11月19日星期四格林威治标准时间08:52:00
缓存控制:无存储,无缓存,必须重新验证,后检查=0,预检查=0
Pragma:没有缓存
保持活动状态:超时=5,最大=99
连接:保持活力
传输编码:分块
内容类型:text/html;字符集=utf-8
----------------------------------------------------------
但当我试图保存另一个特定文件,即dir.php时,情况有所不同:
https://example.com/?
邮政/?HTTP/1.1
主持人:example.com
用户代理:Mozilla/5.0(Windows NT 6.1;rv:36.0)Gecko/20100101 Firefox/36.0
接受:text/html、application/xhtml+xml、application/xml;q=0.9,*/*;q=0.8
接受语言:胡胡,恩美国;q=0.8,胡;q=0.5,en;q=0.3
接受编码:gzip,deflate
DNT:1
推荐人:https://example.com/?path=/home/csirmazd/public_html/[…]/fs/view/dir.php&view=preview
曲奇:[……]
连接:保持活力
内容类型:application/x-www-form-urlencoded
内容长度:4604
[...]
HTTP/1.1 501方法未实现
日期:2015年3月28日星期六15:03:04 GMT
服务器:Apache/2.2.29(Unix)mod_ssl/2.2.29 OpenSSL/1.0.1e-fips mod_bwlimited/1.4
允许:跟踪
内容长度:458
连接:关闭
内容类型:text/html;字符集=iso-8859-1
X-Pad:避免浏览器错误
----------------------------------------------------------
浏览器中的消息是
GET to / not supported.
什么?那为什么它对其他一切都有效呢
根本不调用底层PHP代码
首先,我认为这是一辆马车。但是如果我记得的话,我禁用了它,在根目录中启用了一个重写引擎。所以我认为这不是问题所在。(它仍然通过调用index.php来处理example.com/)
我的第二个想法是,POST请求的最大大小非常小。但我可以编辑更大的文件,没有问题
现在我没有主意了,我不知道去哪里找
有什么想法吗?问题的根源似乎是托管提供商在Apache服务器上安装的ModSecurity模块
作为
因此,我尝试了一个实验,将相同的内容发布到一个随机URI中,得到了与以前相同的错误。显然,当您提交表单中的代码时,这件事是不喜欢的
因此,显而易见的解决办法是关掉它
在我的特殊情况下,我的cPanel中没有关闭它的选项,因此我通过在客户端对表单内容进行base64编码来绕过它