允许我的网站嵌入iFrame

时间:2014-02-01 16:02:16

标签: php nginx

我的Nginx服务器将X-Frame标头设置为DENY,这是迄今为止的好处。但现在我只需要允许我网站的一个页面嵌入到我的域外的iframe中。

我尝试在服务于网页的控制器内使用php在应用程序级别解决此问题:

header('X-Frame-Options: ALLOW-FROM 127.0.0.1');

但是当我尝试将网页嵌入外部iframe时的响应是:

X-Frame-Options:ALLOW-FROM 127.0.0.1
X-Frame-Options:DENY

那么连接选项(nginx配置的一组与应用程序代码中的一组)?那么,我如何允许我的服务器的单个页面嵌入外部iframe?

3 个答案:

答案 0 :(得分:0)

为什么不写一个简单的if else语句?如果PHP检测到某个页面(URL),则允许嵌入到iFrame中,否则不允许嵌入到iFrame中。

答案 1 :(得分:0)

在Django的情况下,我们像这样解决了它

location /the/page/you/want/to/expose/ {
    add_header Access-Control-Allow-Origin *;
    include        uwsgi_params;
    uwsgi_pass     unix:/run/uwsgi/app/appsco/socket;
}

location / {
    add_header X-Frame-Options DENY;  #This is your catch all.
    include        uwsgi_params;
    uwsgi_pass     unix:/run/uwsgi/app/appsco/socket;
}

请记住将add_header移除到整个服务器。把它放在你的全部。对于Django用户@frame_deny_exempt,请查看http://django-secure.readthedocs.org/en/latest/middleware.html

答案 2 :(得分:0)

我认为您需要删除X-Frame-Options:DENY,明确说明允许似乎在默认情况下阻止其他所有内容。我只用URL而不是IP地址测试了这个,但https://example.com的x帧被阻止了,而test.mysite-b.com可以嵌入test.mysite-b.com和虚拟主机同样的配置mysite-b.com也被阻止嵌入test.mysite-b.com。

add_header X-Frame-Options "ALLOW-FROM http://test.mysite-b.com";

这允许test.mysite-b.com使用此配置嵌入任何站点,包括其自身。其他网站仍然被拒绝,无法嵌入test.mysite-b.com或其他网址。

作为参考,这是我的整个SSL配置:

ssl_protocols TLSv1 TLSv1.1 TLSv1.2 TLSv1.3;
ssl_prefer_server_ciphers on;
ssl_ciphers EECDH+ECDSA+AESGCM:EECDH+aRSA+AESGCM:EECDH+ECDSA+SHA512:EECDH+ECDSA+SHA384:EECDH+ECDSA+SHA256:ECDH+AESGCM:ECDH+AES256:DH+AESGCM:DH+AES256:RSA+AESGCM:!aNULL:!eNULL:!LOW:!RC4:!3DES:!MD5:!EXP:!PSK:!SRP$
ssl_ecdh_curve secp384r1;
ssl_session_cache shared:SSL:10m;
ssl_session_tickets off;
ssl_stapling on;
ssl_stapling_verify on;
resolver 37.235.1.174 37.235.1.177 valid=300s;
resolver_timeout 5s;
add_header Strict-Transport-Security 'max-age=31536000; includeSubDomains; preload' always;
add_header X-Frame-Options "ALLOW-FROM http://test.mysite-b.com";
add_header X-Content-Type-Options nosniff;
ssl_dhparam /etc/ssl/certs/dhparam.pem;

一个潜在的问题我可以认为您的允许网址列表是可访问的,因此如果您希望它们因某些原因而被隐藏......它们将不会被隐藏。

Load denied by X-Frame-Options: https://test.mysite-b.com/ does not permit framing by https://mysite-b.com/iframe.html.
相关问题