电信光猫外接路由器能直接连2个路由器吗?怎么设置

& & & 前后台交互的主要技术是ajax,他的核心对象是XMLHttpRequest(XHR)对象,但受同源策略的限制(相同的域、相同的端口、相同的协议),试图访问上述限制之外的资源,都会引发安全错误。
(1)采用被认可的跨于解决方案CORS(Cross-Origin&Resource&Sharing,跨域资源共享),IE8通过XDomainRequest(XDR)对象支持CORS,其他浏览器通过XHR对象原生支持CORS。
(2)图像Ping:动态创建图像经常用于图像Ping,它是与服务器进行简单。单向跨域通信的一种方式。请求的数据通过查询字符串的形式发送,由于浏览器得不到任何具体的数据,所以可以侦听load和error事件,知道响应是什么时候侦听到的。图像Ping最常用于跟踪用户点击页面或动动态广告曝光次数。有两个主要缺点:一是只能发送GET请求,二是无法响应服务器的文本。
(3)JSONP是通过动态创建&script&元素使用的,可以为src属性指定一个跨域URL。能够直接访问文本,支持双向通信。两个不足:一是如果其他域不安全,很可能会在响应中夹带一些恶意代码;二是不容易确定JSONP请求是否失败,html5中给&script&元素新增了一个onerror事件处理程序,但目前没有浏览器支持。为此,开发人员要使用计时器检测指定时间内是否接收到了响应。
Function&handleResponse(response){
&&&&& alert(&you&re&at&IP&address&+response.ip+&which&is&in&+response.city+&,&+response.name);
var&script=document.createElement(&script&);
Script.src=&http://freegeoip.net/json/?callback=handleResponse&&;
document.body.insertBefore(script,document.body.firstChild);
【注】:图像Ping和JSONP不如CORS稳妥;
(3)Comet是对ajax的进一步扩展,让服务器几乎能够实时的向客户端推送数据,实现Comet的手段主要有两个:长轮询和HTTP流。所有浏览器都支持长轮询,而只有部分浏览器原生支持HTTP流。SSE(Sever-Sent&Events,服务器发送事件)是一种实现Comet交互的浏览器API,即支持长轮询,有支持HTTP流。
(4)Web&Sockets是一种与服务器进行全双工、双向通信的信道。与其他方案不同,Web&Sockets不使用HTTP协议,使用一种自定义协议。这种协议专门为快速传输小数据设计,因此非常适合移动应用。由于使用了自定义协议,所以URL模式也略有不同,未加密连接由http://变成ws://;加密连接由https://变成wss://。
阅读(...) 评论()IE8、9 下的资源跨域请求
我的图书馆
IE8、9 下的资源跨域请求
Web 浏览器具有一个称为相同站点源策略的安全策略,此策略可阻止网页访问另一个域中的数据。 网站通常会让其服务器在后端请求其他站点服务器中的内容,由此避开浏览器中的检查,从而绕开此策略。
关于同源策略或者是跨域请求的概念,可以先读我的前一篇文章:
不同源的资源读取带来了方便,也带来了弊端。作为开发者也不得不做出一些妥协的事情。 实际上 IE 7、8、9、10 对于跨域ajax 是默认不支持的。我在 中搜索 cors 得到以下的结果。
浏览器的支持程度
IE 10 以下的支持都是很糟糕的,如果你一定要开启,那就按照很多网友说的方法试一下,
解决方法如下:点击IE浏览器的的“工具-&Internet 选项-&安全-&自定义级别”将“其他”选项中的“通过域访问数据源”选中为“启用”或者“提示”,点击确定就可以了。
但是作为一个普通用户,谁知道这么设置呢?所以,必须从代码层面上解决这个问题。
在 stackoverflow 中有一个问题,
This is a known
with jQuery. The jQuery team has "no plans to support this in core and is better suited as a plugin." (See ). IE does not use the XMLHttpRequest, but an alternative object named XDomainRequest.
解决办法——XDomainRequest
通过使用 Internet Explorer 8 中的跨域请求(缩写为“XDR”),开发人员可以创建跨网站数据聚合方案。 这个名为 的请求与
对象类似,但编程模型更加简单,它可以提供一种最简单的方式来向支持 XDR 的第三方站点发出匿名请求,并选择使这些站点的数据可跨域使用。 只需三行代码即可生成基本的跨站点请求。 这将确保针对公共站点(例如,博客或其他社交网络应用程序)的数据聚合简单、安全和快速。
跨域请求需要经过网页和服务器的相互同意。 通过利用
对象创建 XDomainRequest 对象,并打开到特定域的连接,可以在网页中启动一个跨域请求。 浏览器将通过发送带有源值的 Origin 标头,从特定域的服务器中请求数据。 如果服务器响应的 Access-Control-Allow-Origin 标头为 * 或请求页面的确切 URL,则浏览器将仅仅完成连接。 此行为是万维网联盟 (W3C) 的 Web 应用程序工作组制定的、针对与 XDomainRequest 对象集成的客户端跨域通信的草稿框架的一部分。
更优雅的解决办法
这是一个基于 XDomainRequest 实现 jquery ajxa 的 jquery 插件,为了支持 IE8、9的cors。
$.getJSON('http://jsonmoon.jsapp.us/').done(function(data) {
console.log(data.name.first);
url: 'http://frozen-woodland-/cors.json',
data: 'this is data being posted to the server',
contentType: 'text/plain',
type: 'POST',
dataType: 'json'
}).done(function(data) {
console.log(data.name.last);
为了在IE 浏览器中使用 XDomainRequest,以下是必须的,
Only GET or POSTWhen POSTing, the data will always be sent with a Content-Type of text/plain
Only HTTP or HTTPS Protocol must be the same scheme as the calling page
Always asynchronous
TA的最新馆藏3268人阅读
javascript(54)
官网地址:&&
不过都是英文的。。。
W3C CORS(跨域资源共享)是对于跨域请求的一个规范,目前各个主流浏览器都实现了这个规范,IE8开始,增加了XDomainRequest作为跨域请求的对象,而Firefox与Chrom则CORS直接实现在XMLHttpRequest对象中,更方便使用。不过IE10中,XMLHttpRequest对象也实现了CORS。
本文主要总结 XDomainRequest 对象一些使用方法。XDomainRequest 首先是个简单的实现,他仅有有限的几个方法供我们来调用,支持少数事件但足够。
仅只是 GET 和 POST 两个方法。支持的事件有:onerror,onload,onprogress,ontimeout提供的方法:abort,open,send提供的属性:contentType, responseText,timeout
以下是个一个典型的代码片段
varurl = 'http://localhost:8084/Server/HandlerServlet';
varxdr = newXDomainRequest();
xdr.onload = function() { & & & & &&
& & alert(xdr.responseText);
xdr.onerror = function() {
& & alert(&error&);
xdr.timeout = 1000;
xdr.ontimeout = function() {
& & alert(&timeout&);
xdr.open(&get&, url);
xdr.send();
xdr.open(&get&, url);
xdr.send();
注意,使用跨域的时候,如果需要使用跨域请求返回的内容,则需添加响应头&Access-Control-Allow-Origin:* ,* 代表了允许任何域使用响应的内容。在Java中的做法如下:
response.addHeader(&Access-Control-Allow-Origin&,&*&);
上面是使用 GET 请求,然后再说一下使用 POST 请求的方式,这里有需要注意的地方,使用 POST 请求的代码片段如下:
xdr.open(&post&, url);
varpostData = encodeURI(JSON.stringify(data));
xdr.send(&num=1000&);
这里并没有什么需要注意的地方,需要注意的地方在服务端,在服务端你并不能从参数中获取到 POST 的数据,在java中你并不能通过 request.getParameter来获得num的内容,你只能从流里面读取出来,然后在自行解析,代码片段如下:
BufferedReader br = request.getReader();
String s =
while((s = br.readLine()) != null) {
& & System.out.println(s);
这可能是 XDomainRequest 的一个bug,也可能是故意这么实现的,这我们就不深究了,知道如何获取数据就可以了。
不管如何,XDomainRequest毕竟给我提供了一个跨域请求的方式,在Ajax开发中,如果有跨域请求,且浏览器版本在IE10以下, XDomainRequest 给了我们一个捷径。
&&相关文章推荐
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:92899次
积分:1825
积分:1825
排名:千里之外
原创:82篇
转载:60篇
(1)(3)(1)(4)(2)(12)(5)(2)(2)(8)(2)(8)(15)(4)(6)(68)ie8 下 iframe
怎么实现跨域 cookie 有效????? - ITeye问答
IFRAME 调用的一个外部服务器论坛登录页面....&& 不能登录...&& 想请问是否有解决办法& 浏览器版本要求IE8
通过设置"P3P" value="CP=CAO PSA OUR"& 目前是解决了 IE7
可是项目要求必须满足所有浏览器&& &&& 求IE8 跨域& cookie 有效的方法 。 先言谢
亲,试试这个~ XDomainRequestAllowed:IE8新支持的特性,XDomainRequestAllowed设置为1可以实现跨域请求。&
看看这个。
/topic/34400
已解决问题
未解决问题

我要回帖

更多关于 电信光猫桥接路由器 的文章

 

随机推荐