首页 > 后端开发 > php教程 > iframe 跨站 被浏览器拦截

iframe 跨站 被浏览器拦截

WBOY
发布: 2016-06-06 20:20:00
原创
2704 人浏览过

前端代码:

<code><iframe src="Customer/login_to_spe" width="100%" height="1200px" scrolling="no" frameborder="0"> 

</iframe>
</code>
登录后复制
登录后复制

后端代码:

<code>function login_to_spe(){
        //省略了get url 代码
   header("Location: $url");
}
</code>
登录后复制
登录后复制

前端代码和后端代码都在同一个域名下,login_to_spe()获取的url是另一个域名下的

iframe引用的是同域名下的url,虽然这个url进行了跳转,但为什么还是被浏览器拦截了?

浏览器报的错误:Load denied by X-Frame-Options: https://xxxx.com/ does not permit cross-origin framing.

最后查出来的问题是:清了浏览器的缓存就不会报错了。。ORZ。。

回复内容:

前端代码:

<code><iframe src="Customer/login_to_spe" width="100%" height="1200px" scrolling="no" frameborder="0"> 

</iframe>
</code>
登录后复制
登录后复制

后端代码:

<code>function login_to_spe(){
        //省略了get url 代码
   header("Location: $url");
}
</code>
登录后复制
登录后复制

前端代码和后端代码都在同一个域名下,login_to_spe()获取的url是另一个域名下的

iframe引用的是同域名下的url,虽然这个url进行了跳转,但为什么还是被浏览器拦截了?

浏览器报的错误:Load denied by X-Frame-Options: https://xxxx.com/ does not permit cross-origin framing.

最后查出来的问题是:清了浏览器的缓存就不会报错了。。ORZ。。

请求数据步骤

发送请求--->浏览器接受响应--->判断是否是同域下

是的话,就把响应数据返回给请求点。不是的话就提醒禁止跨域请求。

现在可以在响应头中增加

<code>header("Access-Control-Allow-Origin: *");    //允许的域
header("Access-Control-Allow-Methods: POST, GET, OPTIONS");    //允许的方法
header("Access-Control-Allow-Headers: X-PINGOTHER");    //允许的自定义header</code>
登录后复制

告诉浏览器可以把响应值返回给跨域请求的点

=============================================================================
1楼的评论,说这针对的不对
看提示
Load denied by X-Frame-Options: https://xxxx.com/ does not permit cross-origin framing.

X-Frame-Options头就是用来告诉浏览器,本页面是否应该在frame显示本页面。
它的配置:

<code>DENY              这个页面不允许在frame中显示
SAMEORIGIN        只允许在本域的frame中显示
ALLOW-FROM uri    配置允许显示的域</code>
登录后复制

因此,只需要添加如下

<code>header("X-Frame-Options: ALLOW-FROM xxx你的域xxx");</code>
登录后复制
相关标签:
来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板