解决 iframe Content Security Policy directive 错误
最近项目上要加一个视频播放功能, 添加完之后点击报错如下
Refused to display 'https://api.baidu.com/' in a frame because it set 'X-Frame-Options' to 'sameorigin'.
查找了一番, 解决方法如下
#Nginx 错误页面无法显示add_header设置的响应头,在nginx 1.7.5以后的版本,新增了always参数,在设置请求头后增加该参数即可
#DENY:浏览器拒绝当前页面加载任何Frame页面
#SAMEORIGIN:frame页面的地址只能为同源域名下的页面
#ALLOW-FROM:允许frame加载的页面地址
add_header X-Frame-Options SAMEORIGIN always;
add_header X-Content-Type-Options nosniff always;
#frame-ancestors:允许frame加载的页面地址
add_header Content-Security-Policy 'frame-ancestors https://api.baidu.com/' always;
主要起作用的最后一句, 添加上需要的域名,
重启nginx,又报错如下
Refused to frame 'https://www.baidu.com/' because an ancestor violates the following Content Security Policy directive: "frame-ancestors https://www.baidu.com/".
参考如下链接 https://stackoverflow.com/questions/42781949/refused-to-display-in-a-frame-because-an-ancestor-violates-the-following-content
于是修改如下
add_header Content-Security-Policy 'frame-ancestors https://*.baidu.com/' always;
重启nginx , 完美解决