我需要从另一个域中的Iframe访问父域URL。
例如,"example.com"是我的网站,它有一个来自另一个父域(如"google.com")的Iframe。在这里,我需要从我的example.com获取父域URL,即我需要在example.com域中获取URL "google.com"。此外,父域不能是硬编码的。
我尝试使用以下代码:
window.parent.location.href()
但这会导致访问被拒绝的错误。我该如何正确实现以实现这个目标?
问题的原因是因为跨域访问iframe是不可能的,出于安全原因,这解释了您收到的错误信息。
解决方法是使用以下方法之一:
1. 使用postMessage API进行跨域通信。这允许在不同域之间安全地传递消息。
2. 在目标网站上设置适当的CORS头。这将允许从其他域访问该站点的内容。
3. 如果您有控制目标网站的权限,可以在目标网站上实现一个代理页面,该页面将在同一域中加载,并将请求转发到原始网站。
这些解决方法可以帮助您在iframe中使用JavaScript实现跨域URL访问。
问题原因:在使用JavaScript从iframe实现跨域URL访问时,需要解决如何获取父站点的referer的问题。
解决方法:通过检查referer来确定是否为父站点。可以通过以下方式来实现:
var href = document.referrer;
但是这种方法只适用于首次打开iframe时。如果在iframe内部导航,那么前一个页面将成为referer。
由于安全原因,浏览器不允许在混合模式环境中加载子iframe。例如,主页面是https,而子页面是在一个iframe中的http。
解决方法是将子页面放在https中,然后在iframe中进行form-post到https页面。在https页面上,可以使用WebSockets来接收到达服务器的form-post通知。或者可以以每x秒的间隔轮询是否有新的数据到达。如果为post分配一个guid,那么子页面可以通过JSONP-poll https页面(应该允许),通过guid请求答案 - 轮询直到获取到答案。不知道在这种情况下是否可以使用WebSockets。
用户名或电子邮箱地址
密码