【问题标题】:How to do redirect via header in Opera?如何通过 Opera 中的标头进行重定向?
【发布时间】:2010-11-07 15:12:59
【问题描述】:

嘿,所以我一直在我工作的每个项目或页面中使用此功能。

function redirect_to($location = NULL) {
    if ($location != NULL) {
        header("Location: {$location}");
        exit;
    }
}

现在我检查了 Opera 并且重定向在那里不起作用?所以这非常令人沮丧我应该如何修复它以便它也可以在 Opera 浏览器中使用? 我拥有的所有其他浏览器都可以完美运行:FF/IE/Chrome。

另外我可能会注意到我在该标题之前没有任何输出,并且没有空格或空闲行。

谢谢。

【问题讨论】:

  • 在 Opera 中会发生什么? $location 长什么样子?
  • 在歌剧中也可以。令人沮丧的是你自己的技能。
  • 你确定 Opera 浏览器也有这个功能吗?您的代码中是否有一些用户代理检测?
  • @Pekka - 在示例中我目前遇到问题我使用 $location = "../index.php"
  • @ Stillstanding - 不,我没有任何类型的用户代理检测。

标签: php redirect header opera


【解决方案1】:

只是为了帮助其他人,在我的情况下,Opera 拒绝 2 次重定向到相同的 URL。

  • Opera 请求 URL
  • 一些隐藏的 PHP 代码添加了 cookie-checker-cookie 并重定向到相同的 URL
  • Opera 正确获取 cookie 并再次请求原始 URL
  • 我的代码添加了一个 cookie 并再次重定向到相同的 URL
  • Opera 只是站在那里空白页

其他浏览器在退出前需要多次重定向到相同的 URL,但 Opera 在第二次重定向时停止。 Opera v12,也就是。

【讨论】:

    【解决方案2】:

    Opera 应该可以很好地处理标头重定向。

    正如@stillstanding 所说,首先要确保 100% 到达线路。对其他东西(echo "test";)做一个测试输出,看看它是否可见。

    根据规范,标头重定向需要一个绝对 URL(即使客户端通常支持相对的)。试试这是否有帮助。

    【讨论】:

    • 我测试了函数 redirect_to($location = NULL) { if ($location != NULL) { header('HTTP/1.0 302 Moved Permanently'); header("位置:example.com{$location}");回声$位置;出口; } } Opera 中的页面在 logout.php 页面上停止并显示 echo 语句 index.php
    • 如果我打开歌剧(类似萤火虫的工具),我看到那里的响应标头设置为位置:<a href="/default/index/tourl?u=aHR0cDovL3d3dy5leGFtcGxlLmNvbS9pbmRleC5waHA8L2NvZGU%3D" rel="nofollow" target="_blank">example.com/index.php&lt;/code</a>&gt;
    • @arma 很神秘。你能在另一台机器上确认吗?
    • @Pekka - 我目前还没有在本地服务器上运行它。好吧,我需要延迟这个问题,直到我在实时服务器上提出这个问题。
    • @arma 您应该在其他地方确认这一点,它可能是您的 Opera 本地或疯狂的防火墙/防病毒包行为。
    【解决方案3】:

    确保还设置/发送 HTTP 重定向状态码; 301、302 或 307。 见http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.3

    【讨论】:

    • 在 PHP 中,如果您发出位置标头而不指定状态码,它会自动设置为 302。您可以通过将第三个参数设置为 header() 来专门设置要使用的状态码。跨度>
    • 嗯,那我试试其他 2 个状态码。也许歌剧不喜欢302?我不知道……
    猜你喜欢
    • 1970-01-01
    • 2014-12-01
    • 1970-01-01
    • 1970-01-01
    • 2012-11-01
    • 1970-01-01
    • 1970-01-01
    • 2016-10-12
    • 1970-01-01
    相关资源
    最近更新 更多