【发布时间】:2014-07-16 11:28:10
【问题描述】:
我正在我公司网站的一个用例中测试 PHP 中的 303 重定向,我注意到 2 个不同的案例之间存在巨大延迟,一个执行正常,另一个持续 10 秒,我意识到这是我的超时设置(带有 CURLOPT_TIMEOUT 标志)。
测试是尝试重定向后POST查询转换为GET查询的情况。
我也用 301 和 302 重定向对其进行了测试,结果是一样的。终于在这个问题上苦苦挣扎后,我找到了解决方案,我认为分享起来会很有趣。
重定向页面
<?php
header("HTTP/1.1 303 See Other");
header("Location: http://127.0.0.1/test-303-redirection-2.html");
cURL 示例脚本
<?php
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, "http://127.0.0.1/test-303-redirection-1.php");
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 10);
curl_setopt($ch, CURLOPT_TIMEOUT, 10);
curl_setopt($ch, CURLOPT_VERBOSE, TRUE);
curl_setopt($ch, CURLOPT_HEADER, true);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, "field1=value1&field2=value2");
curl_setopt($ch, CURLOPT_HTTPHEADER, array(
'host: 127.0.0.1',
'accept: */*',
'content-length: 29',
'content-type: application/x-www-form-urlencoded'
)
);
$theResponse = curl_exec($ch);
print_r(curl_getinfo($ch)) ;
此脚本每次执行都会持续 10 秒。
【问题讨论】: