关于document.referrer某些情况下记录不到源网页的问题

项目中有个很简单的需求,5个页面,手机端分享出去的只要不是首页,打开默认跳转首页,页面间正常跳转不影响。本来有两种方法实现,1、服务端控制,2、客户端跳转

由于是静态页面,只能由客户端控制。用referrer是否为空控制跳转,但是测试中发现,某些浏览器坑了。做了个小测试,例如有两个页面如下:

test1.html:

<a href="test2.html">跳转</a>

test2.html:

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title></title>
	</head>
	<body>
		<script>
			document.write(document.referrer);
		</script>
	</body>
</html>

点击test1.html中的链接跳转到2,打印的是test1.html的url地址,意料之内。

修改一下test1.html为表单提交跳转,如下:

<form action="refer.php" class="personinformation-submit" method="post">
            
            <section class="testSubmit" id="messageSubmit">
                <input type="submit" class="recruitGO" id="messageGO" value="提交">
            </section>
        </form>

refer.php如下:

扫描二维码关注公众号,回复: 4893304 查看本文章
<?php

header('location: http://bbs.laozhou.net.cn/buglist_test/test2.html');

表单提交后直接由php控制重定向到test2.html

结果坑出来了,所有浏览器正常,唯独qq内核浏览器,包括qq浏览器和微信内置,test2.html显示空白。意味着通过服务端控制跳转后referrer在qq内核浏览器中为空,而普通页面间跳转referrer所有浏览器正常。

qq浏览器也算奇葩了。这里做移动前端开发的可能会碰到这个坑,分享出来,交流一下。

猜你喜欢

转载自blog.csdn.net/jiangcs520/article/details/47418675