【发布时间】:2014-12-11 09:59:29
【问题描述】:
我将我的 PHP 网站托管在一个共享的网络托管帐户上,所以我不确定是什么原因造成的,因为我没有直接访问服务器的权限。
有问题的页面非常简单。它的 PHP 脚本通过 GET 请求接收数据并用它填写页面上的表单(在用户填写其余部分之前作为默认设置。)
例如,它可以接受这样的 URL:
http://www.example.com/test.php?id=sendform&name=somename&ver=1.0&desc=some%20description
然后 PHP 脚本读取传递给它的参数(通过 stripslashes($_REQUEST['desc']); 之类的函数)并创建 HTML 标记,其中的表单字段填充了传递给它的数据。
所以这工作正常,直到我注意到如果我传递一个长 URL(我不知道确切的限制,但例如我的测试 URL 是 1,280 个字符长)我的test.php 中的脚本不会执行并且页面挂了很长时间,直到浏览器出现错误超时。
我首先认为应该归咎于 stripslashes($_REQUEST['desc']); 调用,因此我删除了所有内容,只留下了一行:
print("Got to the end");
它仍然被一个长 URL 挂断。
所以我很好奇,为什么会这样?以及如何防止这种“挂机”?
【问题讨论】:
-
与
GET有关。如果您要发送大量文本,则需要通过POST发送。 -
@Darren:嗯,首先我远远低于这个限制(大约 2K)。其次,我不能使用 POST。此请求从 Chrome 扩展程序中的 JavaScript 进入新的浏览器窗口。
-
对于那些感兴趣的人,这里是如何使用 JavaScript 使用
POST请求打开一个新的浏览器页面:stackoverflow.com/a/17793207/843732