如何解决chrome中有多个标题无法使用-php
| 我使用PHP通过将mailto:重写为脚本,然后设置引用页面的标题来跟踪所有mailto链接的点击。 最初我只有:header(\"location: mailto:email@address.com\");
...但是这在IE8中有不良影响:它会打开2个电子邮件窗口。因此,为了解决该问题,我现在使用:
header(\"Status: 200\");
header(\"location: http://mypage.com\");
header(\"Refresh: 0; url=mailto:email@address.com\");
这在IE中可以正常运行,但在chrome中则不能。我把“状态”扔在那里,希望能解决这个谜。
除了检测浏览器并发出不同的命令外,还能做什么?
解决方法
位置标头应随附30X状态代码(例如302),而不是200。
, 查看此内容> http://php.net/manual/zh/function.header.php
特别是这两部分:
第二个特殊情况是
\“ Location:\”标头。不仅
将此标头发送回浏览器,
但它还会返回REDIRECT(302)
状态代码发送给浏览器,除非
201或3xx状态码已经
被设置。
<?php
header(\"Location: http://www.example.com/\"); /* Redirect browser */
/* Make sure that code below does not get executed when we redirect. */
exit;
?>
您同时发送200和302,并且您没有遵循exit;
规则。
您可以考虑我的建议(尤其是exit;
部分)。
!!!注意 !!!过去存在一个错误,如果未首先设置header(\"Status: 200\");
,Chrome便无法运行,但不确定是否已修复。
, 最好使用一些AJAX在这里处理您的问题,如果您打算使用AJAX,请使用JQuery,这会更容易
首先,尽管mailto不再是Web上的首选方法,但它过于笨拙,并且依赖于所设置的用户的默认电子邮件客户端,在大多数情况下您不能依赖它。
因此,要解决的问题是链接的样式看起来像您的按钮。
一旦有了这个功能,就可以使用JQuery将ajax请求发送到执行计数的PHP脚本,然后如果希望在收到收据后使用重定向来处理成功(我只包括了这一点,因为我不确定您的重定向将实现什么)。
它的清理速度快,用户可能不会注意到与您的网站不同的地方,但速度可能会有所提高:)希望这会有所帮助
, 标头位置会重定向浏览器,因此其他标头将被忽略。您应该始终将此头作为最后一个发送。发送重定向后执行任何PHP代码也不是一个好主意。
您可能想这样做:
在第一页上:
header(\"Status: 200\");
header(\"location: http://mypage.com\");
exit();
在http://mypage.com
上:
header(\"Refresh: 0; url=mailto:email@address.com\");
, 关于chrome的怪异事物:它接受以下标头刷新。
<meta http-equiv=\"refresh\" content=\"4; url=page.php\" />
<button value=\"go further\">
我为不支持任何类型的标题刷新的浏览器在此刷新下方放置一个按钮。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。