表单提交被重定向

时间:2011-11-10 12:06:31

标签: php .htaccess encoding apache2

尝试发送此表单时,我从所有浏览器中得到这种奇怪的行为。此表单只有2个字段,标题和文章正文。表单默认为application / x-www-form-urlencoded。提交时,网站有时会回复404。

以下日志直接来自Live HTTP Headers。

http://www.faulty-domain.com/article-page  

POST /article-page HTTP/1.1  
Host: www.faulty-domain.com  
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.2.23) Gecko/20110920   Firefox/3.6.23 ( .NET CLR 3.5.30729)  
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8  
Accept-Language: en-us,en;q=0.5  
Accept-Encoding: gzip,deflate  
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7  
Keep-Alive: 115  
Connection: keep-alive  
Referer: http://www.faulty-domain.com/article-page  
Content-Type: application/x-www-form-urlencoded  
Content-Length: 3288  
blog_title=Article+Title+to+save&newsbody=%3Cp%3EThe+current+blah+blah+blah%3C%2Fp%3E  


HTTP/1.1 302 Found  
Date: Tue, 08 Nov 2011 12:42:23 GMT  
Server: Apache/2.0.63 (Unix) mod_ssl/2.0.63 OpenSSL/0.9.8e-fips-rhel5   mod_auth_passthrough/2.1 mod_bwlimited/1.4 FrontPage/5.0.2.2635 PHP/5.2.14  
X-Powered-By: PHP/5.2.14  
Expires: Thu, 19 Nov 1981 08:52:00 GMT  
Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0  
Pragma: no-cache  
Location: http://www.faulty-domain.com/notFound  
Content-Encoding: gzip  
Vary: Accept-Encoding  
Content-Length: 26  
Connection: close  
Content-Type: text/html

页面试图发送给自己,然后假设检查方法是否发布和各种验证检查,通常的东西。但是,http响应是404未找到的页面。

我们的内部框架与Code Igniter类似,因此所有请求都将执行index.php。很明显,Web服务器甚至没有尝试执行index.php,但根据请求标题决定响应应该是404.

现在我已完成自己的调试,并播放了我发送的文章。我试图逐段追加文章,看看bug触发的段落。表格提交罚款直到某个段落,此时我说Bingo!我以为我已经解决了问题并尝试单独使用该段落提交表单,但随后提交了表单。现在让我感到困惑的是,为什么Web服务器会接受它,但如果附加在原始文章的末尾,那就太疯狂了!

它可能是一个htaccess的东西,或者是一个Web服务器的东西,但我无法将这个东西固定。

更新

对于那些要求查看正在发送的帖子数据的人,这是一个链接。我将在一周左右后删除该文件。 http://www.globalpropertyguide.com/temp/faulty-article.html

这是一部可能有帮助的htaccess。基本上我们的index.php根据$ mod接收的值确定要调用的控制器。

RewriteRule ^([^/]+)/$ /$1 [R]
RewriteCond %{QUERY_STRING} !mod= [NC]
RewriteRule ^([^/]+)$ /index.php?mod=$1 [L]

此外,如果它可能有所帮助,这是登录apache error_log

的错误
"POST /write-article HTTP/1.1" 302 26 "http://www.faulty-domain.com/write-article" "Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.2.24) Gecko/20111103 Firefox/3.6.24 ( .NET CLR 3.5.30729)"
"GET /notFound HTTP/1.1" 404 7635 "http://www.faulty-domain.com/write-article" "Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.2.24) Gecko/20111103 Firefox/3.6.24 ( .NET CLR 3.5.30729)"

1 个答案:

答案 0 :(得分:0)

你必须找出谁重定向你,以及为什么。如果你只是简单地用你试图发布错误的身体来更新你的问题,并且接受一个相同大小的身体,那将会非常有帮助。

它可能发生在PHP中。可能存在某种检查长度或坏词的错误重定向。也可能有某种类似的Apache插件活动也是如此。