关于js强制弹出的问题
发布网友
发布时间:2024-10-21 14:40
我来回答
共1个回答
热心网友
时间:2024-11-08 19:28
这个应该设计到同源策略的问题
下面是我官员这个的笔记,虽然帮不到什么,但可以看看
脚本不能读取从不同服务器(严格来讲,这些服务器来自不同的域、端口和协议)载入的文档的内容,除非这个就是包含脚本的文档。这一限制就叫同源策略。
该策略是对javascript代码能够操作那些Web内容的一些完整的安全限制。当Web页面使用多个<iframe>元素或者打开其他浏览器窗口的时候,这一策略通常就会发挥作用。这种情况下,同源策略负责管理窗口或窗体中javascript代码以及和其他窗口或帧的交互。
具体的说,脚本只能读取和所属文档来源相同的窗口和文档的属性。
文档的来源包含协议、主机,以及载入文档的URL端口。
脚本本身的来源和同源策略并不相关,相关的是脚本所嵌入的文档的来源。
同源策略给那些使用多个子域的大站点带来了一些问题。解决办法:可以使用Document对象的domain属性。属性domain存放的是载入文档服务器的主机名。可以设置这个属性名,不过字符串必须具有有效的域前缀或它本身,如baidu.com,domain值中必须有一个点号,不能把它设置为com或其他顶级域名。
两个窗口(或窗体)包含的脚本把domain设置成了相同的值,那么这两个窗口就不在受同源策略的约束,他们可以相互读取对象的属性。
第二项技术已经标准转化为:跨域资源共享。这个标准草案用新的’Origin:‘请求头和新的Access-Control-Allow-Origin响应头来扩展HTTP。它允许服务器用头信息显示地列出源,或使用通配符来匹配所有的源并允许由任何地址请求文件。
第三种技术,叫做跨文档消息,允许来自一个文档的脚本可以传递文本消息到另一个文档里的脚本,而不管脚本的来源是否相同。调用Window对象上的postMessage()方法,可以异步传递消息事件(可以用onmessage事件句处理程序函数来处理它)到窗口的文档里。一个文档里的脚本还是不能调用在其他文档里的方法和读取属性,但他们可以用这种消息传递技术来实现安全的通信。