Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/http/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php IE/FF上缺少HTTP参考信息(在Chrome/Safari上运行良好)_Php_Http_Firefox_Redirect_Http Headers - Fatal编程技术网

Php IE/FF上缺少HTTP参考信息(在Chrome/Safari上运行良好)

Php IE/FF上缺少HTTP参考信息(在Chrome/Safari上运行良好),php,http,firefox,redirect,http-headers,Php,Http,Firefox,Redirect,Http Headers,我在page1.php中使用了以下代码: <form action="/redirect.php" method="POST" target="_blank"> <input name="destination" type="hidden" value="a"/> <input type="submit" value="Click here"></form> 我以这种方式创建重定向页面,因为它对我来说很重要,它将加载和显示某些内容,而不是直接重定

我在page1.php中使用了以下代码:

<form action="/redirect.php" method="POST" target="_blank">
<input name="destination" type="hidden" value="a"/>
<input type="submit" value="Click here"></form>
我以这种方式创建重定向页面,因为它对我来说很重要,它将加载和显示某些内容,而不是直接重定向,因此,它产生200代码,而不是302代码

但是,仅在Chrome和Safari上,重定向的标题包含有关引用url的信息,即redirect.php,因此,例如,domain1.com的所有者将知道访问者来自mydomain.com/redirect.php


但是在IE和FF上,标题中的referer为空。是什么导致了这种不同的行为?我如何修复它,让他们同时携带相同的推荐人信息?

困惑不解。重定向和页面刷新并不相同。以及更多-并非所有浏览器都支持刷新标题。

您可以尝试:

header("Location: ".$url."");

在FF 27.0.1上尝试的工作示例:

文件page1.php:


工作原理:单击page1.php上的“单击此处”按钮后,将发送post数据并返回域http://www.domain.com 他被选中了。使用javascript,在窗口加载4秒后,浏览器将用户重定向到http://www.domain.com. 我已在Firebug中查看了referer标题,它们已发送。

您的回复应该是评论,而不是回答。此重定向不适用于所有浏览器。流行的,不流行的。。重要吗?@gfcodix为什么我的回答不是答案?@deep,因为问题是如何让FF/IE发送相同的推荐人信息。这与此重定向方法是否是最佳实践无关。@deep,因为它更像是一个注释。你认为这样的答案会被选为正确答案吗?顺便说一句,为了不伤害stackoverflow配置文件,我做了这样的解释,您是受欢迎的。使用location会将页面变成302重定向,从而阻止加载其内容,这对我来说至关重要。也许在这里您可以找到一些有用的东西Hiya,这可能很好地解决问题。。。但是,如果你能编辑你的答案,并提供一些关于它如何工作以及为什么工作的解释,那就太好了:别忘了,堆栈溢出上有很多新手,他们可以从你的专业知识中学到一两件事——对你来说很明显的事情对他们来说可能不是这样。@gfcodix我不拥有访问者被重定向到的域,所以只有那篇文章中的欺骗选项可能是相关的,但是我并不真正理解这个答案,例如,它没有说明detect_referal.php应该包含什么。还有一个问题是关于使用Location的302重定向,而我的问题是200代码的刷新,所以我不确定它是否能正常工作。在这种情况下,我认为这是你最好的选择。我还没有测试过它,但我不知道浏览器为什么不发送referer。@machineaddict您建议将自动提交表单放在哪里?在redirect.php或page1.php上?我真的不明白这怎么能解决这个问题。。。我不想让URL地址出现在任何页面的主体中。谢谢,我在原始问题中没有提到它,但我更喜欢目标URL只出现在HTTP请求中的方式,就像现在一样,使用元刷新,而不是在文档体中,例如在使用javascript重定向的情况下,如果您喜欢的东西不起作用,您可以用另一种方法来做。生活中有很多事情不是按你喜欢的方式进行的,但你仍然必须去做;
header("Location: ".$url."");
<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <title>Starting page</title>
</head>
<body>
<form action="redirect.php" method="post">
    <input type="hidden" name="destination" value="a">
    <input type="submit" value="Click here">
</form>
</body>
</html>
<?php

$url = "http://www.default.com"; 

if(isset($_POST['destination'])){

    switch ($_POST['destination']) {

    case "a":
        $url = "http://www.domain.com";
        break;

    case "b":
        $url = "http://www.examples.com";
        break;

    default:
        $url = "http://www.example.com";
    }
}

?>
<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <title>Landing page</title>
</head>
<body>
<div>Redirecting, Please wait</div>
<script>
window.onload = function() {
    setTimeout(function(){
        window.location = '<?php echo $url;?>';
    }, 4000);
};
</script>
</body>
</html>