HTML页面通过链接或window.open打开外部链接报400错误解决

Posted by aclyyx on 04-12,2022

同事制作的项目中,出现了一个奇怪的问题。
在页面中通过window.open打开一个外部链接,页面显示400 Bad Request错误,但在地址栏再次回车页面就可以正常显示了。

这里通过一个简单的HTML页面来还原现场,将下面的源码保存为html文件,并通过HTTP服务(如:nginx)部署访问,不论通过直接点击链接跳转,还是js方式window.open,都出现同样的问题。

<html>
<head>
   <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
   <script>
     function a() {
       window.open('https://caers.adrs.org.cn/adrcos/','_blank', '', true); 
     }
   </script>
</head>
<body>
	<a href="javascript:a()">测试链接1</a>
	<a href="https://caers.adrs.org.cn/adrcos/" target="_blank">测试链接2</a>
</body>
</html>

经过潜心琢磨和研究,通过浏览器开发者工具发现Referer : http://192.168.1.21:8081/,应该就是它起了作用。

将页面源码加一行meta信息就解决问题了。

<html>
<head>
	<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
	<meta name="referrer" content="never">
	<meta name="referrer" content="no-referrer">
	<script>
		function a() {
			window.open('https://caers.adrs.org.cn/adrcos/','_blank', '', true); 
		}
	</script>
</head>
<body>
	<a href="javascript:a()">测试链接1</a>
	<a href="https://caers.adrs.org.cn/adrcos/" target="_blank">测试链接2</a>
</body>
</html>