【问题标题】:Form submit gets redirected表单提交被重定向
【发布时间】:2011-12-26 03:03:33
【问题描述】:

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

下面的日志直接取自 Live HTTP Headers。

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

POST /article-page HTTP/1.1
主机:www.faulty-domain.com
用户代理: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)
接受:text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
接受语言:en-us,en;q=0.5
接受编码:gzip,deflate
接受字符集:ISO-8859-1,utf-8;q=0.7,*;q=0.7
保活:115
连接:保持活动
参考:http://www.faulty-domain.com/article-page
内容类型:application/x-www-form-urlencoded
内容长度:3288
blog_title=文章+标题+to+save&newsbody=%3Cp%3EThe+current+blah+blah+blah%3C%2Fp%3E


找到 HTTP/1.1 302
日期:格林威治标准时间 2011 年 11 月 8 日星期二 12:42:23
服务器: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
到期:1981 年 11 月 19 日星期四 08:52:00 GMT
缓存控制:无存储、无缓存、必须重新验证、后检查 = 0、预检查 = 0
Pragma:无缓存
位置:http://www.faulty-domain.com/notFound
内容编码:gzip
变化:接受编码
内容长度:26
连接:关闭
内容类型:text/html

页面尝试发送给自己,然后假设检查方法是否已发布和各种验证检查,通常的东西。但是,http 响应是一个 404 not found 页面。

我们的内部框架像 Code Igniter 一样工作,所有的请求都会执行 index.php。显然,Web 服务器甚至没有尝试执行 index.php,而是根据请求标头以某种方式决定响应应该是 404。

现在我已经完成了自己的调试,并开始使用我发送的文章。我尝试逐段附加文章,并查看错误触发的段落。表单提交很好,直到某个段落,那时我说宾果!我以为我隔离了问题并尝试仅使用该段落提交表单,但随后提交了表单。现在让我感到困惑的是,为什么网络服务器会按原样接受它,但如果附加在原始文章的末尾,那就太疯狂了!

这可能是一个 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)"

【问题讨论】:

  • @Phil,确实,但是如果我们仔细查看响应头部分,位置是一个未找到的页面。我想,当服务器确定请求有问题时,它会将请求重定向到 404。我可能是错的。
  • .htaccess 是什么样的?框架是否有可能是启动重定向的框架? “像 Code Igniter 这样的作品”并没有太多可取之处。
  • @nachito,我添加了一些可能有助于进一步解决问题的信息

标签: php .htaccess encoding apache2


【解决方案1】:

您必须找出重定向您的人以及原因。如果您只是用您尝试发布的错误正文更新您的问题,以及一个被接受的大小相同的正文,这将非常有帮助。

这可能发生在 PHP 中。可能有某种长度检查或坏词检查会导致错误的重定向。也可能有某种激活的 Apache 插件可以做同样的事情。

【讨论】:

  • 我添加了一些可能有助于进一步解决问题的信息
  • 我更新了链接 faulty-article.html。这次我在上面放了cmets,请查看它的源代码。
  • 转到lipsum.com,生成几个段落并尝试发布这些。同样,没有人可以为您猜到这一点。我已经给出了一些提示(查看您的 PHP 代码和 Apache 配置)。
猜你喜欢
  • 2013-04-13
  • 2021-02-15
  • 1970-01-01
  • 1970-01-01
  • 2016-10-06
相关资源
最近更新 更多