我有一个包含许多输入的表单。一些名为“日期”,“类型”等。
表单操作通过http://www.xxx.com/admin/links/create
指向POST
。
当我尝试提交时(正确填充了必填字段),我收到403
回复。
在以下情况下,我会收到302
或200
个响应代码(具体取决于登录Cookie):
http://www.xxx.com/admin/links/create
地址栏中的网址(我知道这是GET); 我检查了权限,.htaccess(我只有对web-root的FTP访问权限)和various other 个地方以及看起来的所有内容。
我希望它不是naming collision of the inputs(实际上,我希望如此,因为这很容易解决)。
上述所有情况都发生在production
,即Linux
(Fedora上的Apache / 2.0.51)。一切正常local
,Windows
。不要告诉我它的权限......
有人知道这可能是什么原因 - 在我自己的看法中 - 奇怪的行为?
答案 0 :(得分:0)
罪魁祸首:Apache的mod_security。
我的Windows机器上没有安装该模块(这就是它在本地工作的原因),但服务器安装了它。
这就是我的所作所为:
我检查了访问日志。发现这个:
[...] mod_security: Access denied with code 403. Pattern match "!(^application/x-www-form-urlencoded$|^multipart/form-data;)" at HEADER("Content-Type") [...] [uri "/admin/links/create"] [...]
由于我不知道如何处理mod_security(还是!),我完全删除了它,并且它有效。在.htaccess
:
<IfModule mod_security.c> SecFilterInheritance Off </IfModule>
当然,您可以精确定位Apache目标,以便使用指令将该规则应用于某些文件/文件夹。
一些可能有用的链接:
http://community.mybb.com/showthread.php?tid=7592
http://wordpress.org/support/topic/upgrade-to-22-dashboard-not-working
http://energy-4-3.com/uncategorized/mod_security-access-denied-with-code-403-pattern-match-http/
http://www.modsecurity.org/(主页)