Heim >Backend-Entwicklung >PHP-Tutorial >iframe 跨站 被浏览器拦截

iframe 跨站 被浏览器拦截

WBOY
WBOYOriginal
2016-06-06 20:20:002703Durchsuche

前端代码:

<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>
Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn