- 浏览: 175293 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (140)
- java (138)
- 佳能500d (1)
- 佳能 (1)
- Oracle数据库文档构造器--Oraschemadoc (1)
- EJB调用的原理分析 (1)
- 使用css3画"静音"icon (1)
- 张小庆,在路上(16)-给弟弟找工作 (1)
- Android短信编解码方式 (1)
- lua web 开发 (1)
- zk安装 (1)
- 菜单多国语言化遇到的问题 (1)
- 【转】纯文本配置还是注册表 (1)
- C++ delete删除动态分配的内存 (1)
- eclipse下修改项目名导致tomcat内发布名不一致的解决方法 (1)
- Lucene实现各种常见文档的全文检索 (1)
- 项目风险之人员流动风险 (1)
- 时空数据模型简介 (1)
- XSLT学习笔记 (1)
- 依然是计划 如果没有计划似乎就没有了动力 (1)
- How to Succeed in A Professional Career (1)
- 编程环境应该和讨论社区完美的进行结合 (1)
- C#坦克大战实现 (1)
- 电脑用户密码忘记了怎么办? (1)
- java.lang.NoClassDefFoundError: org/dom4j/DocumentException (1)
- 关于成立北京Android爱好者俱乐部的声明 (1)
- Android开发之初探音频的播放 (1)
- Struts标签循环List (1)
- CAP原理 (1)
- javabean的自动生成 (1)
- 打开CMD一闪就关的解决方案 (1)
- 我是项目经理,我的项目管理日记【20111202】 (1)
- Html5游戏开发入门笔记--<躲砖块> (1)
- mysql中查看和设置系统字符编码 (1)
- PhoneGap-Accelerometer (1)
- [Jetty]Jetty工作原理 (1)
- Ibatis+Spring整合实例Demo+源码 (1)
最新评论
-
u012985907:
dsdsdsdsd
FLASH上传与拍照 -头像-avatart -
a379933101:
?????????????????????????????
android listview 连续调用 getview问题分析及解决 -
151tmac:
拜托下次粘贴的时候,粘贴为纯文本
android listview 连续调用 getview问题分析及解决 -
liudezhong135:
...
Spring3MVC 在JSP中使用@ModelAttribute -
香飘飘2011:
要是不知道层次级别,如何退回到根目录呢
FTP退回到根目录
在客户端编程语言中,如javascript和actionscript,同源策略是一个很重要的安全理念,它在保证数据的安全性方面有着重要的意义。同 源策略规定跨域之间的脚本是隔离的,一个域的脚本不能访问和操作另外一个域的绝大部分属性和方法。那么什么叫相同域,什么叫不同的域呢?
本文永久链接地址: http://www.woiweb.net/10-cross-domain-methods.html
欢迎转载,转载请注明来源于我爱互联网,多谢合作!
同源策略
在客户端编程语言中,如javascript和 actionscript,同源策略是一个很重要的安全理念,它在保证数据的安全性方面有着重要的意义。同源策略规定跨域之间的脚本是隔离的,一个域的脚 本不能访问和操作另外一个域的绝大部分属性和方法。那么什么叫相同域,什么叫不同的域呢?当两个域具有相同的协议(如http), 相同的端口(如80),相同的host(如www.example.org),那么我们就可以认为它们是相同的域。比如 http://www.example.org/index.html和http://www.example.org/sub/index.html是 同域,而http://www.example.org, https://www.example.org, http://www.example.org:8080, http://sub.example.org中的任何两个都将构成跨域。同源策略还应该对一些特殊情况做处理,比如限制file协议下脚本的访问权限。 本地的html文件在浏览器中是通过file协议打开的,如果脚本能通过file协议访问到硬盘上其它任意文件,就会出现安全隐患,目前ie8还有这样的 隐患。
受到同源策略的影响,跨域资源共享就会受到制约。但是随着人们的实践和浏览器的进步,目前在跨域请求的技巧上,有很多宝贵经验的沉淀和积累。这里我把跨域资源共享分成两种,一种是单向的数据请求,还有一种是双向的消息通信。接下来我将罗列出常见的一些跨域方式,以下跨域实例的源代码可以从这里获得。
单向跨域
jsonp
jsonp (json with padding)是一个简单高效的跨域方式,html中的script标签可以加载并执行其他域的javascript,于是我们可以通过script标记来动态加载其他域的资源。 例如我要从域a的页面pagea加载域b的数据,那么在域b的页面pageb中我以javascript的形式声明pagea需要的数据,然后在 pagea中用script标签把pageb加载进来,那么pageb中的脚本就会得以执行。jsonp在此基础上加入了回调函数,pageb加载完之后 会执行pagea中定义的函数,所需要的数据会以参数的形式传递给该函数。jsonp易于实现,但是也会存在一些安全隐患,如果第三方的脚本随意地执行, 那么它就可以篡改页面内容,截获敏感数据。但是在受信任的双方传递数据,jsonp是非常合适的选择。
flash urlloader
flash有自己的一套安全策略,服务器可以通过crossdomain.xml文件来声明能被哪些域的swf文件访问,swf也可以通过api来确定自身能被哪些域的swf加载。当跨域访问资源时,例如从域www.a.com请求域www.b.com上的数据,我们可以借助flash来 发送http请求。首先,修改域www.b.com上的crossdomain.xml(一般存放在根目录,如果没有需要手动创建) ,把www.a.com加入到白名单。其次,通过flash urlloader发送http请求,最后,通过flash api把响应结果传递给javascript。flash urlloader是一种很普遍的跨域解决方案,不过需要支持ios的话,这个方案就无能为力了。
access control
access control是比较超越的跨域方式,目前只在很少的浏览器中得以支持,这些浏览器可以发送一个跨域的http请求(firefox, google chrome等通过xmlhttprequest实现,ie8下通过xdomainrequest实现),请求的响应必须包含一个access- control-allow-origin的http响应头,该响应头声明了请求域的可访问权限。例如www.a.com对www.b.com下的 asset.php发送了一个跨域的http请求,那么asset.php必须加入如下的响应头:
header("access-control-allow-origin: http://www.a.com");
window.name
window 对象的name属性是一个很特别的属性,当该window的location变化,然后重新加载,它的name属性可以依然保持不变。那么我们可以在页面 a中用iframe加载其他域的页面b,而页面b中用javascript把需要传递的数据赋值给window.name,iframe加载完成之后,页 面a修改iframe的地址,将其变成同域的一个地址,然后就可以读出window.name的值了。这个方式非常适合单向的数据请求,而且协议简单、安 全。不会像jsonp那样不做限制地执行外部脚本。
server proxy
在数据提供方没有提供对jsonp协议或者 window.name协议的支持,也没有对其它域开放访问权限时,我们可以通过server proxy的方式来抓取数据。例如当www.a.com域下的页面需要请求www.b.com下的资源文件asset.txt时,直接发送一个指向 www.b.com/asset.txt的ajax请求肯定是会被浏览器阻止。这时,我们在www.a.com下配一个代理,然后把ajax请求绑定到这个代理路径下,例如www.a.com/proxy/, 然后这个代理发送http请求访问www.b.com下的asset.txt,跨域的http请求是在服务器端进行的,客户端并没有产生跨域的ajax请求。这个跨域方式不需要和目标资源签订协议,带有侵略性,另外需要注意的是实践中应该对这个代理实施一定程度的保护,比如限制他人使用或者使用频率。
双向跨域
document.domain
通 过修改document的domain属性,我们可以在域和子域或者不同的子域之间通信。同域策略认为域和子域隶属于不同的域,比如www.a.com和 sub.a.com是不同的域,这时,我们无法在www.a.com下的页面中调用sub.a.com中定义的javascript方法。但是当我们把它 们document的domain属性都修改为a.com,浏览器就会认为它们处于同一个域下,那么我们就可以互相调用对方的method来通信了。
fim – fragment identitier messaging
不 同的域之间,javascript只能做很有限的访问和操作,其实我们利用这些有限的访问权限就可以达到跨域通信的目的了。fim (fragment identitier messaging)就是在这个大前提下被发明的。父窗口可以对iframe进行url读写,iframe也可以读写父窗口的url,url有一部分被称 为frag,就是#号及其后面的字符,它一般用于浏览器锚点定位,server端并不关心这部分,应该说http请求过程中不会携带frag,所以这部分 的修改不会产生http请求,但是会产生浏览器历史记录。fim的原理就是改变url的frag部分来进行双向通信。每个window通过改变其他 window的location来发送消息,并通过监听自己的url的变化来接收消息。这个方式的通信会造成一些不必要的浏览器历史记录,而且有些浏览器 不支持onhashchange事件,需要轮询来获知url的改变,最后,url在浏览器下有长度限制,这个制约了每次传送的数据量。
flash localconnection
页 面上的双向通信也可以通过flash来解决,flash api中有localconnection这个类,该类允许两个swf之间通过进程通信,这时swf可以播放在独立的flash player或者air中,也可以嵌在html页面或者是pdf中。遵循这个通信原则,我们可以在不同域的html页面各自嵌套一个swf来达到相互传递 数据的目的了。swf通过localconnection交换数据是很快的,但是每次的数据量有40kb的大小限制。用这种方式来跨域通信过于复杂,而且 需要了2个swf文件,实用性不强。
window.postmessage
window.postmessage是html5定义的一个很新的方法,这个方法可以很方便地跨window通信。由于它是一个很新的方法,所以在很旧和比较旧的浏览器中都无法使用。
cross frame
cross frame是fim的一个变种,它借助了一个空白的iframe,不会产生多余的浏览器历史记录,也不需要轮询url的改变,在可用性和性能上都做了很大 的改观。它的基本原理大致是这样的,假设在域www.a.com上有页面a.html和一个空白代理页面proxya.html, 另一个域www.b.com上有个页面b.html和一个空白代理页面proxyb.html,a.html需要向b.html中发送消息时,页面会创建 一个隐藏的iframe, iframe的src指向proxyb.html并把message作为url frag,由于b.html和proxyb.html是同域,所以在iframe加载完成之后,b.html可以获得iframe的url,然后解析出 message,并移除该iframe。当b.html需要向a.html发送消息时,原理一样。cross frame是很好的双向通信方式,而且安全高效,但是它在opera中无法使用,不过在opera下面我们可以使用更简单的 window.postmessage来代替。
总结
跨域的方法很多,不同的应用场景我们都可以找到一个最合适的解决方 案。比如单向的数据请求,我们应该优先选择jsonp或者window.name,双向通信我们采取cross frame,在未与数据提供方没有达成通信协议的情况下我们也可以用server proxy的方式来抓取数据。
本文永久链接地址: http://www.woiweb.net/10-cross-domain-methods.html
欢迎转载,转载请注明来源于我爱互联网,多谢合作!
同源策略
在客户端编程语言中,如javascript和 actionscript,同源策略是一个很重要的安全理念,它在保证数据的安全性方面有着重要的意义。同源策略规定跨域之间的脚本是隔离的,一个域的脚 本不能访问和操作另外一个域的绝大部分属性和方法。那么什么叫相同域,什么叫不同的域呢?当两个域具有相同的协议(如http), 相同的端口(如80),相同的host(如www.example.org),那么我们就可以认为它们是相同的域。比如 http://www.example.org/index.html和http://www.example.org/sub/index.html是 同域,而http://www.example.org, https://www.example.org, http://www.example.org:8080, http://sub.example.org中的任何两个都将构成跨域。同源策略还应该对一些特殊情况做处理,比如限制file协议下脚本的访问权限。 本地的html文件在浏览器中是通过file协议打开的,如果脚本能通过file协议访问到硬盘上其它任意文件,就会出现安全隐患,目前ie8还有这样的 隐患。
受到同源策略的影响,跨域资源共享就会受到制约。但是随着人们的实践和浏览器的进步,目前在跨域请求的技巧上,有很多宝贵经验的沉淀和积累。这里我把跨域资源共享分成两种,一种是单向的数据请求,还有一种是双向的消息通信。接下来我将罗列出常见的一些跨域方式,以下跨域实例的源代码可以从这里获得。
单向跨域
jsonp
jsonp (json with padding)是一个简单高效的跨域方式,html中的script标签可以加载并执行其他域的javascript,于是我们可以通过script标记来动态加载其他域的资源。 例如我要从域a的页面pagea加载域b的数据,那么在域b的页面pageb中我以javascript的形式声明pagea需要的数据,然后在 pagea中用script标签把pageb加载进来,那么pageb中的脚本就会得以执行。jsonp在此基础上加入了回调函数,pageb加载完之后 会执行pagea中定义的函数,所需要的数据会以参数的形式传递给该函数。jsonp易于实现,但是也会存在一些安全隐患,如果第三方的脚本随意地执行, 那么它就可以篡改页面内容,截获敏感数据。但是在受信任的双方传递数据,jsonp是非常合适的选择。
flash urlloader
flash有自己的一套安全策略,服务器可以通过crossdomain.xml文件来声明能被哪些域的swf文件访问,swf也可以通过api来确定自身能被哪些域的swf加载。当跨域访问资源时,例如从域www.a.com请求域www.b.com上的数据,我们可以借助flash来 发送http请求。首先,修改域www.b.com上的crossdomain.xml(一般存放在根目录,如果没有需要手动创建) ,把www.a.com加入到白名单。其次,通过flash urlloader发送http请求,最后,通过flash api把响应结果传递给javascript。flash urlloader是一种很普遍的跨域解决方案,不过需要支持ios的话,这个方案就无能为力了。
access control
access control是比较超越的跨域方式,目前只在很少的浏览器中得以支持,这些浏览器可以发送一个跨域的http请求(firefox, google chrome等通过xmlhttprequest实现,ie8下通过xdomainrequest实现),请求的响应必须包含一个access- control-allow-origin的http响应头,该响应头声明了请求域的可访问权限。例如www.a.com对www.b.com下的 asset.php发送了一个跨域的http请求,那么asset.php必须加入如下的响应头:
header("access-control-allow-origin: http://www.a.com");
window.name
window 对象的name属性是一个很特别的属性,当该window的location变化,然后重新加载,它的name属性可以依然保持不变。那么我们可以在页面 a中用iframe加载其他域的页面b,而页面b中用javascript把需要传递的数据赋值给window.name,iframe加载完成之后,页 面a修改iframe的地址,将其变成同域的一个地址,然后就可以读出window.name的值了。这个方式非常适合单向的数据请求,而且协议简单、安 全。不会像jsonp那样不做限制地执行外部脚本。
server proxy
在数据提供方没有提供对jsonp协议或者 window.name协议的支持,也没有对其它域开放访问权限时,我们可以通过server proxy的方式来抓取数据。例如当www.a.com域下的页面需要请求www.b.com下的资源文件asset.txt时,直接发送一个指向 www.b.com/asset.txt的ajax请求肯定是会被浏览器阻止。这时,我们在www.a.com下配一个代理,然后把ajax请求绑定到这个代理路径下,例如www.a.com/proxy/, 然后这个代理发送http请求访问www.b.com下的asset.txt,跨域的http请求是在服务器端进行的,客户端并没有产生跨域的ajax请求。这个跨域方式不需要和目标资源签订协议,带有侵略性,另外需要注意的是实践中应该对这个代理实施一定程度的保护,比如限制他人使用或者使用频率。
双向跨域
document.domain
通 过修改document的domain属性,我们可以在域和子域或者不同的子域之间通信。同域策略认为域和子域隶属于不同的域,比如www.a.com和 sub.a.com是不同的域,这时,我们无法在www.a.com下的页面中调用sub.a.com中定义的javascript方法。但是当我们把它 们document的domain属性都修改为a.com,浏览器就会认为它们处于同一个域下,那么我们就可以互相调用对方的method来通信了。
fim – fragment identitier messaging
不 同的域之间,javascript只能做很有限的访问和操作,其实我们利用这些有限的访问权限就可以达到跨域通信的目的了。fim (fragment identitier messaging)就是在这个大前提下被发明的。父窗口可以对iframe进行url读写,iframe也可以读写父窗口的url,url有一部分被称 为frag,就是#号及其后面的字符,它一般用于浏览器锚点定位,server端并不关心这部分,应该说http请求过程中不会携带frag,所以这部分 的修改不会产生http请求,但是会产生浏览器历史记录。fim的原理就是改变url的frag部分来进行双向通信。每个window通过改变其他 window的location来发送消息,并通过监听自己的url的变化来接收消息。这个方式的通信会造成一些不必要的浏览器历史记录,而且有些浏览器 不支持onhashchange事件,需要轮询来获知url的改变,最后,url在浏览器下有长度限制,这个制约了每次传送的数据量。
flash localconnection
页 面上的双向通信也可以通过flash来解决,flash api中有localconnection这个类,该类允许两个swf之间通过进程通信,这时swf可以播放在独立的flash player或者air中,也可以嵌在html页面或者是pdf中。遵循这个通信原则,我们可以在不同域的html页面各自嵌套一个swf来达到相互传递 数据的目的了。swf通过localconnection交换数据是很快的,但是每次的数据量有40kb的大小限制。用这种方式来跨域通信过于复杂,而且 需要了2个swf文件,实用性不强。
window.postmessage
window.postmessage是html5定义的一个很新的方法,这个方法可以很方便地跨window通信。由于它是一个很新的方法,所以在很旧和比较旧的浏览器中都无法使用。
cross frame
cross frame是fim的一个变种,它借助了一个空白的iframe,不会产生多余的浏览器历史记录,也不需要轮询url的改变,在可用性和性能上都做了很大 的改观。它的基本原理大致是这样的,假设在域www.a.com上有页面a.html和一个空白代理页面proxya.html, 另一个域www.b.com上有个页面b.html和一个空白代理页面proxyb.html,a.html需要向b.html中发送消息时,页面会创建 一个隐藏的iframe, iframe的src指向proxyb.html并把message作为url frag,由于b.html和proxyb.html是同域,所以在iframe加载完成之后,b.html可以获得iframe的url,然后解析出 message,并移除该iframe。当b.html需要向a.html发送消息时,原理一样。cross frame是很好的双向通信方式,而且安全高效,但是它在opera中无法使用,不过在opera下面我们可以使用更简单的 window.postmessage来代替。
总结
跨域的方法很多,不同的应用场景我们都可以找到一个最合适的解决方 案。比如单向的数据请求,我们应该优先选择jsonp或者window.name,双向通信我们采取cross frame,在未与数据提供方没有达成通信协议的情况下我们也可以用server proxy的方式来抓取数据。
发表评论
-
Ibatis+Spring整合实例Demo+源码
2012-02-08 12:58 1398<span style="color: ... -
[Jetty]Jetty工作原理
2012-02-07 17:29 992http://www.ibm.com/develo ... -
PhoneGap-Accelerometer
2012-02-07 14:23 1200采集设备在x、y、z方向上的动作。 acce ... -
mysql中查看和设置系统字符编码
2012-02-04 14:28 1705--查看数据库的字符集 show variables ... -
Html5游戏开发入门笔记--<躲砖块>
2012-02-03 12:04 1165学习了html5中的canvas画布元素,自己写了一个 ... -
我是项目经理,我的项目管理日记【20111202】
2012-02-03 10:19 987其实前段时间项目 ... -
打开CMD一闪就关的解决方案
2012-02-02 12:14 1383转:http://blog.163.com/cumt_ ... -
javabean的自动生成
2012-02-02 11:59 1396在jcreator pro中自动生成 在j ... -
CAP原理
2012-02-01 09:00 1146作者:NinGoo 原文链接:ht ... -
Struts标签循环List
2012-01-31 14:18 959<pre name="code&quo ... -
Android开发之初探音频的播放
2012-01-11 16:29 1082<h1>Android开发之初探音频的播放 ... -
关于成立北京Android爱好者俱乐部的声明
2012-01-11 14:33 859<blockquote dir="lt ... -
java.lang.NoClassDefFoundError: org/dom4j/DocumentException
2011-12-28 13:03 15090<span style="font-f ... -
电脑用户密码忘记了怎么办?
2011-12-28 12:14 978<span style="fon ... -
C#坦克大战实现
2011-12-20 13:29 1114记得在大学学java ... -
编程环境应该和讨论社区完美的进行结合
2011-12-19 11:54 758在学习.NET过程中,经常会遇到很多问题,有的时候会找 ... -
How to Succeed in A Professional Career
2011-12-19 10:29 728(From Microsoft)<br>& ... -
依然是计划 如果没有计划似乎就没有了动力
2011-12-15 10:39 875</span></span>& ... -
XSLT学习笔记
2011-12-14 14:04 662<p class="MsoNorma ... -
时空数据模型简介
2011-12-14 13:59 1477<p class="MsoNo ...
相关推荐
javascript最全的10种跨域共享的方法
在客户端编程语言中,如javascript和ActionScript,同源策略是一个很重要...同 源策略规定跨域之间的脚本是隔离的,一个域的脚本不能访问和操作另外一个域的绝大部分属性和方法。那么什么叫相同域,什么叫不同的域呢?
浏览器都有一个同源策略,其限制之一就是第一种方法中我们说的不能通过ajax的方法去请求不同源中的文档。 它的第二个限制是浏览器中不同域的框架之间是不能进行js的交互操作的。 三、使用window.name来进行跨域 ...
设置CORS响应头实现跨域 跨源资源共享(CORS) CORS(Cross-Origin Resource Sharing),跨域资源共享。CORS 是官方的跨域解决方 案,它的特点是不需要在客户端做任何特殊的操作,完全在服务器中进行处理,支持 ...
分享转载:前端常见跨域解决方案 1、 通过jsonp跨域 2、 document.domain + iframe跨域 3、 location.hash + ...6、 跨域资源共享(CORS) 7、 nginx代理跨域 8、 nodejs中间件代理跨域 9、 WebSocket协议跨域
本文详细介绍了javascript跨域资源共享,供大家参考,具体内容如下 1.为什么提出跨域资源共享(CORS)? 因为XHR实现ajax的安全限制是:XHR 对象只能访问与包含它的页面位于同一个域中的资源 2.如何实现跨域?(跨...
主要介绍了Apache中配置支持CORS(跨域资源共享)实例,本文给出了一个完整的apache、PHP、JavaScript结合实现的跨域资源共享实例,需要的朋友可以参考下
启用跨域资源共享(CORS) 笔记该存储库包含指南文档源。 要以已发布的形式查看该指南,请在上进行查看。 了解如何在Open Liberty中启用跨源资源共享(CORS),而无需编写Java代码。您将学到什么您将学习如何添加两...
用 JSONP 抓到的资料并不是 JSON,而是任意的 JavaScript,用 JavaScript 直译器执行而不是用 JSON 解析器解析。 下面是我在一个项目中的应用: 描述:域名dev.uc.everychina.com 要获得域名 dev.members.ever
介绍该库的初衷是一个简单的目标:提供一种处理事件的简单方法,而无需付出多次编写特殊代码的麻烦,以防万一我们处于跨域情况。 向PostEvent打个招呼。功能集跨域如果iFrame不共享相同的原始URL,或者标头未设置为...
跨域是我在日常面试中经常会问到的问题,这词在前端界出现的频率不低,主要原因还是由于安全限制(同源策略, 即JavaScript或Cookie只能访问同域下的内容),因为我们在日常的项目开发时会不可避免的需要进行跨域操作...
目录 一、AJAX示例 1.1、优点 1.2、缺点 1.3、jQuery AJAX示例 二、延迟对象(Deferred) 2.1、回调函数 ...AJAX全称为“Asynchronous JavaScript And XML”(异步JavaScript和XML) 是指一种创建交互式网
允许跨域共享本地存储。 使用主机授予对本地存储的访问权限。 使用来宾来访问主机上的本地存储。安装npm我跨域存储用法主持人var createHost = require ( 'cross-domain-storage/host' ) ;主机(allowedDomains) ...
Séance可以通过浏览器的本地存储实现跨域状态共享。 Séance可以由任意多个域达成协议。 一个Seance实例在您要用作提供者的域上初始化。 订阅此共享状态的每个域都会注册一个Medium ,从而允许其观察共享状态并对...
public class CorsConfig {public CorsConfig() { }// 1. 添加cors配置信息// 设置是否发送cookie信
斯科尔SCOL-R(可共享的跨源学习资源)可帮助您通过SCORM API将教学内容与LMS连接,即使两者位于不同的域中也是如此。 开始: 在的body的data-source属性中设置远程内容的URL。 编辑以编辑课程标题和标识符以及元...
JavaScript的10种跨域共享方法 JavaScript类型总览 JavaScript获取文本框光标的像素位置 js函数match、exec、test、search、replace、split使用介绍 技巧:Javascript使用隐藏的new来创建对象 禁止页面全选复制,...
禁用-cors 将禁用当前选项卡的跨域资源共享 (CORS) 的 Firefox 扩展。下载已编译的插件
(2) CROS:跨域资源共享 以下为CROS解决方案: a.在WebService接口加上响应头信息: b.在web.config文件中加上相关配置节信息: 运用a或者b的解决方案后,浏览器头信息中变动如下: 最终问题得以较好的解决,...