Cross-Origin-Opener-Policy 设置后页面打不开怎么回事?
我在 Nginx 里加了 Cross-Origin-Opener-Policy: same-origin,结果页面直接白屏了,控制台报错说“Blocked by COOP”。我就是想防止别人用 window.open 引用我的页面,但自己站内跳转也挂了,这咋整?
我试过改成 unsafe-none 能正常打开,但这样就没防护作用了。是不是我理解错了这个头的用法?
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>测试页面</title>
</head>
<body>
<button onclick="window.open('/other.html')">打开新页</button>
</body>
</html>
same-origin会把window.open打开的同源页面也当成跨域关系拦掉。解决方案:改成
Cross-Origin-Opener-Policy: same-origin-allow-popups,这样同源页面通过 window.open 打开的可以继续通信,同时跨域的 opener 引用还是会被阻断。Nginx 配置:
如果你只需要保护某些敏感页面,可以只给那些页面加这个头,其他页面该咋用咋用。