表单提交403,cURL / wget 200/302

时间:2011-08-02 11:10:56

标签: php http-post form-submit httpresponse http-status-code-403

我有一个包含许多输入的表单。一些名为“日期”,“类型”等。

表单操作通过http://www.xxx.com/admin/links/create指向POST

当我尝试提交时(正确填充了必填字段),我收到403回复。

在以下情况下,我会收到302200个响应代码(具体取决于登录Cookie):

  • 普通http://www.xxx.com/admin/links/create地址栏中的网址(我知道这是GET);
  • 使用websniffer(GET& POST)
  • curl / wget from local

我检查了权限,.htaccess(我只有对web-root的FTP访问权限)和various other 个地方以及看起来的所有内容。

希望它不是naming collision of the inputs(实际上,我希望如此,因为这很容易解决)。


上述所有情况都发生在production,即Linux(Fedora上的Apache / 2.0.51)。一切正常localWindows不要告诉我它的权限......


有人知道这可能是什么原因 - 在我自己的看法中 - 奇怪的行为?

1 个答案:

答案 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/(主页)