首页 > 试题广场 >

下面有关浏览器中使用js跨域获取数据的描述,说法错误的是?

[单选题]
下面有关浏览器中使用js跨域获取数据的描述,说法错误的是?
  • 域名、端口相同,协议不同,属于相同的域
  • js可以使用jsonp进行跨域
  • 通过修改document.domain来跨子域
  • 使用window.name来进行跨域
推荐
只要 协议 域名 端口 有任何一个 不同, 都被当作是 不同 的域。
编辑于 2015-12-27 18:47:36 回复(6)
1.CORS
CORS(Corss-Origin Resource Sharing,跨资源共享),基本思想是使用自定义的HTTP头部让浏览器与服务器进行沟通,从而决定请求或响应的成功或失败。即给请求附加一个额外的Origin头部,其中包含请求页面的源信息(协议、域名和端口),以便服务器根据这个头部决定是否给予响应。
2.document.domain
将页面的document.domain设置为相同的值,页面间可以互相访问对方的JavaScript对象。
注意:
不能将值设置为URL中不包含的域;
松散的域名不能再设置为紧绷的域名。
3.图像Ping
var img=new Image();
img.onload=img.onerror=function(){
... ...
}
img.src="url?name=value";
请求数据通过查询字符串的形式发送,响应可以是任意内容,通常是像素图或204响应。
图像Ping最常用于跟踪用户点击页面或动态广告曝光次数。
缺点:
只能发送GET请求;
无法访问服务器的响应文本,只能用于浏览器与服务器间的单向通信。
4.Jsonp
var script=document.createElement("script");
script.src="url?callback=handleResponse";
document.body.insertBefore(script,document.body.firstChild);
JSONP由两部分组成:回调函数和数据
回调函数是接收到响应时应该在页面中调用的函数,其名字一般在请求中指定。
数据是传入回调函数中的JSON数据。
优点:
能够直接访问响应文本,可用于浏览器与服务器间的双向通信。
缺点:
JSONP从其他域中加载代码执行,其他域可能不安全;
难以确定JSONP请求是否失败。
5.Comet
Comet可实现服务器向浏览器推送数据。
Comet是实现方式:长轮询和流
短轮询即浏览器定时向服务器发送请求,看有没有数据更新。
长轮询即浏览器向服务器发送一个请求,然后服务器一直保持连接打开,直到有数据可发送。发送完数据后,浏览器关闭连接,随即又向服务器发起一个新请求。其优点是所有浏览器都支持,使用XHR对象和setTimeout()即可实现。
流即浏览器向服务器发送一个请求,而服务器保持连接打开,然后周期性地向浏览器发送数据,页面的整个生命周期内只使用一个HTTP连接。
6.WebSocket
WebSocket可在一个单独的持久连接上提供全双工、双向通信。
WebSocket使用自定义协议,未加密的连接时ws://;加密的链接是wss://。
var webSocket=new WebSocket("ws://");
webSocket.send(message);
webSocket.onmessage=function(event){
var data=event.data;
... ....
}
注意:
必须给WebSocket构造函数传入绝对URL;
WebSocket可以打开任何站点的连接,是否会与某个域中的页面通信,完全取决于服务器;
WebSocket只能发送纯文本数据,对于复杂的数据结构,在发送之前必须进行序列化JSON.stringify(message))。
优点:
在客户端和服务器之间发送非常少的数据,减少字节开销。
发表于 2016-07-27 10:52:01 回复(27)
协议什么协议,没想到http和https,是我没学到家.
发表于 2021-07-26 23:48:14 回复(0)
同域:相同域名,端口相同,协议相同,缺一不可
发表于 2021-03-24 16:51:28 回复(0)
1.CORS
CORS(Corss-Origin Resource Sharing,跨资源共享),基本思想是使用自定义的HTTP头部让浏览器与服务器进行沟通,从而决定请求或响应的成功或失败。即给请求附加一个额外的Origin头部,其中包含请求页面的源信息(协议、域名和端口),以便服务器根据这个头部决定是否给予响应。
2.document.domain
将页面的document.domain设置为相同的值,页面间可以互相访问对方的JavaScript对象。
注意:
不能将值设置为URL中不包含的域;
松散的域名不能再设置为紧绷的域名。
3.图像Ping
var img=new Image();
img.onload=img.onerror=function(){
... ...
}
img.src="url?name=value";
请求数据通过查询字符串的形式发送,响应可以是任意内容,通常是像素图或204响应。
图像Ping最常用于跟踪用户点击页面或动态广告曝光次数。
缺点:
只能发送GET请求;
无法访问服务器的响应文本,只能用于浏览器与服务器间的单向通信。
4.Jsonp
var script=document.createElement("script");
script.src="url?callback=handleResponse";
document.body.insertBefore(script,document.body.firstChild);
JSONP由两部分组成:回调函数和数据
回调函数是接收到响应时应该在页面中调用的函数,其名字一般在请求中指定。
数据是传入回调函数中的JSON数据。
优点:
能够直接访问响应文本,可用于浏览器与服务器间的双向通信。
缺点:
JSONP从其他域中加载代码执行,其他域可能不安全;
难以确定JSONP请求是否失败。
5.Comet
Comet可实现服务器向浏览器推送数据。
Comet是实现方式:长轮询和流
短轮询即浏览器定时向服务器发送请求,看有没有数据更新。
长轮询即浏览器向服务器发送一个请求,然后服务器一直保持连接打开,直到有数据可发送。发送完数据后,浏览器关闭连接,随即又向服务器发起一个新请求。其优点是所有浏览器都支持,使用XHR对象和setTimeout()即可实现。
流即浏览器向服务器发送一个请求,而服务器保持连接打开,然后周期性地向浏览器发送数据,页面的整个生命周期内只使用一个HTTP连接。
6.WebSocket
WebSocket可在一个单独的持久连接上提供全双工、双向通信。
WebSocket使用自定义协议,未加密的连接时ws://;加密的链接是wss://。
var webSocket=new WebSocket("ws://");
webSocket.send(message);
webSocket.onmessage=function(event){
var data=event.data;
... ....
}
注意:
必须给WebSocket构造函数传入绝对URL;
WebSocket可以打开任何站点的连接,是否会与某个域中的页面通信,完全取决于服务器;
WebSocket只能发送纯文本数据,对于复杂的数据结构,在发送之前必须进行序列化JSON.stringify(message))。
优点:
在客户端和服务器之间发送非常少的数据,减少字节开销。
发表于 2016-08-11 15:12:26 回复(1)
a
发表于 2015-01-23 14:10:58 回复(0)
完全一致的意思是,域名要相同(www.example.comexample.com不同),协议要相同(httphttps不同),端口号要相同(默认是:80端口,它和:8080就不同)。有的浏览器口子松一点,允许端口不同,大多数浏览器都会严格遵守这个限制。
[廖雪峰的教程]( http://www.liaoxuefeng.com/wiki/001434446689867b27157e896e74d51a89c25cc8b43bdb3000/001434499861493e7c35be5e0864769a2c06afb4754acc6000)
发表于 2017-03-28 10:20:18 回复(0)
三者必须相同,才能称为相同的域
发表于 2015-08-16 19:30:21 回复(0)
http://www.cnblogs.com/2050/p/3191744.html

javascript 跨域解决方案:
jsonp跨域
document.domain() 跨子域
window.name 跨域

发表于 2015-12-25 19:10:13 回复(0)
相同的域是指: 域名 端口 协议都相同
发表于 2017-08-06 19:00:40 回复(0)
域名,端口,协议,任何一项不同都属于跨域
发表于 2022-08-13 22:18:48 回复(0)
域名端口协议相同,则属于相同的域
发表于 2021-02-16 00:04:12 回复(0)
jpp头像 jpp
协议 端口 主机  也就是协议 端口 域名

编辑于 2020-08-20 15:18:19 回复(0)
协议,域名,端口号要完全一致,否则就为跨域
发表于 2020-07-31 23:23:09 回复(0)
一、通过jsonp跨域 在js中,我们直接用XMLHttpRequest请求不同域上的数据时,是不可以的。但是,在页面上引入不同域上的js脚本文件却是可以的,jsonp正是利用这个特性来实现的。 2、通过修改document.domain来跨子域 浏览器都有一个同源策略,其限制之一就是第一种方法中我们说的不能通过ajax的方法去请求不同源中的文档。 它的第二个限制是浏览器中不同域的框架之间是不能进行js的交互操作的。有一点需要说明,不同的框架之间(父子或同辈),是能够获取到彼此的window对象的,但蛋疼的是你却不能使用获取到的window对象的属性和方法(html5中的postMessage方法是一个例外,还有些浏览器比如ie6也可以使用top、parent等少数几个属性),总之,你可以当做是只能获取到一个几乎无用的window对象。 3、使用window.name来进行跨域 window对象有个name属性,该属性有个特征:即在一个窗口(window)的生命周期内,窗口载入的所有的页面都是共享一个window.name的,每个页面对window.name都有读写的权限,window.name;是持久存在一个窗口载入过的所有页面中的,并不会因新页面的载入而进行重置。 4、使用HTML5中新引进的window.postMessage方法来跨域传送数据 window.postMessage(message,targetOrigin)  方法是html5新引进的特性,可以使用它来向其它的window对象发送消息,无论这个window对象是属于同源或不同源,目前IE8+、FireFox、Chrome、Opera等浏览器都已经支持window.postMessage方法。 调用postMessage方法的window对象是指要接收消息的那一个window对象,该方法的第一个参数message为要发送的消息,类型只能为字符串;第二个参数targetOrigin用来限定接收消息的那个window对象所在的域,如果不想限定域,可以使用通配符 *  。 需要接收消息的window对象,可是通过监听自身的message事件来获取传过来的消息,消息内容储存在该事件对象的data属性中。
发表于 2020-07-30 01:33:43 回复(0)
1.JSP 出于安全考虑,不允许跨域调用其他页面的对象 2.不允许跨域是因为JSP 同源策略的限制 3.同源策略规定跨域之间的脚本是隔离的,一个域的脚本不能访问和操作另外一个域的绝大部分属性和方法。 4.域名,端口,协议相同才是同一个域
编辑于 2020-05-08 22:40:28 回复(0)
相同的域是指: 域名 端口 协议都相同
发表于 2019-05-06 19:36:40 回复(0)
1.CORS CORS(Corss-Origin Resource Sharing,跨资源共享),基本思想是使用自定义的HTTP头部让浏览器与服务器进行沟通,从而决定请求或响应的成功或失败。即给请求附加一个额外的Origin头部,其中包含请求页面的源信息(协议、域名和端口),以便服务器根据这个头部决定是否给予响应。 2.document.domain 将页面的document.domain设置为相同的值,页面间可以互相访问对方的JavaScript对象。 注意: 不能将值设置为URL中不包含的域; 松散的域名不能再设置为紧绷的域名。 3.图像Ping var img=new Image(); img.onload=img.onerror=function(){ ... ... } img.src="url?name=value"; 请求数据通过查询字符串的形式发送,响应可以是任意内容,通常是像素图或204响应。 图像Ping最常用于跟踪用户点击页面或动态广告曝光次数。 缺点: 只能发送GET请求; 无法访问服务器的响应文本,只能用于浏览器与服务器间的单向通信。 4.Jsonp var script=document.createElement("script"); script.src="url?callback=handleResponse"; document.body.insertBefore(script,document.body.firstChild); JSONP由两部分组成:回调函数和数据 回调函数是接收到响应时应该在页面中调用的函数,其名字一般在请求中指定。 数据是传入回调函数中的JSON数据。 优点: 能够直接访问响应文本,可用于浏览器与服务器间的双向通信。 缺点: JSONP从其他域中加载代码执行,其他域可能不安全; 难以确定JSONP请求是否失败。 5.Comet Comet可实现服务器向浏览器推送数据。 Comet是实现方式:长轮询和流 短轮询即浏览器定时向服务器发送请求,看有没有数据更新。 长轮询即浏览器向服务器发送一个请求,然后服务器一直保持连接打开,直到有数据可发送。发送完数据后,浏览器关闭连接,随即又向服务器发起一个新请求。其优点是所有浏览器都支持,使用XHR对象和setTimeout()即可实现。 流即浏览器向服务器发送一个请求,而服务器保持连接打开,然后周期性地向浏览器发送数据,页面的整个生命周期内只使用一个HTTP连接。 6.WebSocket WebSocket可在一个单独的持久连接上提供全双工、双向通信。 WebSocket使用自定义协议,未加密的连接时ws://;加密的链接是wss://。 var webSocket=new WebSocket("ws://"); webSocket.send(message); webSocket.onmessage=function(event){ var data=event.data; ... .... } 注意: 必须给WebSocket构造函数传入绝对URL; WebSocket可以打开任何站点的连接,是否会与某个域中的页面通信,完全取决于服务器; WebSocket只能发送纯文本数据,对于复杂的数据结构,在发送之前必须进行序列化JSON.stringify(message))。 优点: 在客户端和服务器之间发送非常少的数据,减少字节开销。
发表于 2019-02-27 19:26:30 回复(0)
盲区知识点:
JS跨域获取数据
1 域名,端口,协议 有任何一个不同,都是属于不同的域


发表于 2018-06-21 10:51:38 回复(0)
协议域名端口号任何一个不同都是不同的域。
发表于 2018-05-23 14:24:44 回复(0)
只要 协议  域名  端口 有任何一个 不同, 都被当作是 不同 的域
发表于 2018-05-09 19:05:49 回复(0)