在广告服务器上,我们使用以下简单的PHP脚本重定向到广告的目标网页:

<?php
$lp=array_key_exists('lp',$_REQUEST)?trim($_REQUEST['lp']):"";
$location = sprintf('Location: %s', $lp ) ;
header( $location ) ;
?>

该脚本采用其lp参数并重定向到该URL。目的是使我们可以扫描访问日志以跟踪点击率(URL还包括一个id参数,脚本会忽略该参数)。

我们有一个客户(据我所知到目前为止),该客户不能始终如一地工作,仅在IE 8和更早的版本中。出现问题的网址是:

http://webutil.bridgebase.com/v2/ad_lp.php?id=340&lp=http%3A%2F%2Ftravelinsingles.com%2Fhome.htm

这应该重定向到http://travelinsingles.com/home.htm,但有时它会转到http://webutil.bridgebase.com/home.htm(不存在)。似乎总是在第一次点击广告时发生;有时,随后的点击会正确地遵循重定向,有时,它们仍会转到错误的网址。

我在我们的网络服务器上执行了数据包捕获,看起来我们正在发送正确的 header :
HTTP/1.1 302 Moved Temporarily
Server: nginx/1.2.1
Date: Thu, 06 Jun 2013 01:39:12 GMT
Content-Type: text/html
Transfer-Encoding: chunked
Connection: close
X-Powered-By: PHP/5.4.15-1
Location: http://travelinsingles.com/home.htm

我在一次失败的重定向和成功的重定向中都捕获到了,除了日期以外, header 都是相同的。

我使用的是Mac,因此我使用BrowserStack来测试IE,这限制了我在客户端的调试能力。有谁知道是什么原因造成的,如果有什么我们可以解决的办法?

我重现了BrowserStack的屏幕截图功能的问题:

http://www.browserstack.com/screenshots/3659c3b992a1738594d2fd370caef2852fecb3fa

最佳答案

在PHP末尾添加exitdie();会有所不同吗?

有时HTTP客户端在正文中仍然存在内容时发送重定向 header 时不喜欢它(即使它是空内容:空格,行返回等)

关于php - 重定向在IE 8及更低版本中随机失败,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/16952891/

10-14 11:32
查看更多