我有以下通过AJAX传输到页面的iframe代码:
<iframe sandbox="allow-forms allow-scripts" id="iframe-content" src="http://www.example.com" scrolling="yes" style="padding-top:40px;border:0;position:fixed;top:0;left:0;right:0;bottom:0;width:100%;height:100%;background-color:#74A82A;"></iframe>
然后将其写入页面:
$("#bottom").html(data);
我已经检查了该页面,并且正在将新代码成功加载到div中。
但由于某种原因它没有加载页面? Iframe只显示绿色背景颜色。
如何让这个iframe加载页面?
理想情况下,我想传输所有iframe代码,因为我需要为不同的场景创建不同版本的iframe。
答案 0 :(得分:1)
根据您的评论('Access-Control-Allow-Origin' header is present on the requested resource. Origin 'examplemysite.com'; is therefore not allowed access.
),您的问题与CORS有关:基本上,如果服务器端不允许您通过Ajax访问域名。这是一个&#34;安全&#34;大多数现代浏览器的功能。您不会使用curl
或Chrome Postman
扩展名等命令行来解决此问题。
如果您拥有域http://www.examplemysite.com/,请确保Access-Control-Allow-Origin
标头中允许请求数据的域,以及http动词(GET
,POST
,每个http方法都有PUT
...或*
。
基本上,它归结为将以下两个标题添加到http://www.examplemysite.com/
服务器的响应中:
Access-Control-Allow-Origin: *
Access-Control-Allow-Methods: *
修改强> 根据昆汀的评论,您的问题似乎与Same Origin Policy相关。
答案 1 :(得分:1)
&#34;&#39; examplemysite.com&#39;的页面;是通过HTTPS加载的,但请求了一个不安全的资源&#39; http // www.example.com&#39;。此请求已被阻止;内容必须通过HTTPS提供。
似乎是因为我在https上,我无法加载http?
正确。
浏览器正在采取越来越严格的措施来防止混合安全和不安全的内容。
过去,他们会发出一个关于混合安全和不安全内容的警告,警告用户该页面可能不像看起来那么安全。
这些天他们倾向于完全拒绝不安全的内容(可能是因为太多的用户被比#34更复杂的东西所迷惑;这是/不安全&#34;)。
如果您想显示来自其他域的内容,那么您需要通过HTTPS请求它(显然只有在安全地提供它时才可以这样做)或者在普通HTTP上托管您的页面。
我尝试将我的网页放在http上,现在它说“No&#39; Access-Control-Allow-Origin&#39;标头出现在请求的资源上。 Origin&#39; examplemysite.com&#39 ;;因此不允许访问。
这与您尚未包含在问题中的其他代码存在不同的问题。据推测,它位于您嵌入iframe的页面中。
处理访问控制在Stackoverflow上的well documented个问题中,允许原始问题为many different。