The XDomainRequest object has these types of members:

Events

The XDomainRequest object has these events.

Event Description
onerror

Raised when there is an error that prevents the completion of the cross-domain request.

onload

Raised when the object has been completely received from the server.

onprogress

Raised when the browser starts receiving data from the server.

ontimeout

Raised when there is an error that prevents the completion of the request.

Methods

The XDomainRequest object has these methods.

Method Description
abort

The abort method terminates a pending send.

abort

Cancels the current HTTP request.

open (XDomainRequest)

Creates a connection with a domain's server.

send (XDomainRequest)

Transmits a data string to the server for processing.

Properties

The XDomainRequest object has these properties.

Property Description

constructor

Returns a reference to the constructor of an object.

contentType

Gets the Content-Type property in the HTML request or response header.

responseText

Retrieves the response body as a string.

timeout

Gets or sets the time-out value.

Standards information

There are no standards that apply here.

Remarks

The XDomainRequest object is a safe, reliable, and lightweight data service that allows script on any document to anonymously connect to any server and exchange data. Developers can use the XDomainRequest object when cross-site security is not an issue.

Security Warning:   Cross-domain requests ("XDRs") are anonymous to protect user data. This means that servers cannot easily determine who is requesting data. To protect user privacy, respond with cross-domain data that is neither sensitive nor personally identifiable. To help prevent intranet data from being leaked to malicious Internet sites, we discourage intranet sites from making XDR data available.

Cross-domain requests require mutual consent between the document and the server. You can initiate a cross-domain request by creating an XDomainRequest (XDR) object with the window object, and opening a connection to a domain.

The document will request data from the domain's server by sending an Origin header with the value of the origin. It will only complete the connection if the server responds with an Access-Control-Allow-Origin header of either * or the exact URL of the requesting document. This behavior is part of the World Wide Web Consortium (W3C)'s Web Application Working Group's draft framework on client-side cross-domain communication that the XDomainRequest object integrates with.

For example, a server's Active Server Pages (ASP) page might include the following response header:

 
 
<% Response.AddHeader("Access-Control-Allow-Origin","*") %>

Cross domain requests can only be sent and received from a document to URLs in the following zones:

From Document \ To URL Intranet Trusted(Intranet) Trusted(Internet) Internet Restricted
Intranet Allow Allow Allow Allow Deny
Trusted(Intranet) Allow Allow Allow Allow Deny
Trusted(Internet) Deny Deny Allow Allow Deny
Internet Deny Deny Allow Allow Deny
Restricted Deny Deny Deny Deny Deny

The XDR protocol only works with the http:// and https:// protocols.

To use the XDR protocol, you first create an XDomainRequest object. Then you use the open method to establish a connection with a server. Once a connection is opened, the send method transmits data strings to the server for processing. For example:

 
 
// 1. Create XDR object:
var xdr = new XDomainRequest(); // 2. Open connection with server using GET method:
xdr.open("get", "http://www.contoso.com/xdr.aspx"); // 3. Send string data to server:
xdr.send();

Examples

The following example sends an empty message to a server of your choice. You can select a timeout value (default 10000 msec) when sending the request. When you click the Get button, the script creates aXDomainRequest, assigns event handlers, and initiates the request. Script alerts indicate how the request is progressing. Click the Stop button to cancel the request, or the Read button to view additional properties of the response, such as contentType and responseText.

 
<!DOCTYPE html>

<html>
<body>
<h2>XDomainRequest</h2>
<input type="text" id="tbURL" value="http://www.contoso.com/xdr.txt" style="width: 300px"><br>
<input type="text" id="tbTO" value="10000"><br>
<input type="button" onclick="mytest()" value="Get">&nbsp;&nbsp;&nbsp;
<input type="button" onclick="stopdata()" value="Stop">&nbsp;&nbsp;&nbsp;
<input type="button" onclick="readdata()" value="Read">
<br>
<div id="dResponse"></div>
<script>
var xdr;
function readdata()
{
var dRes = document.getElementById('dResponse');
dRes.innerText = xdr.responseText;
alert("Content-type: " + xdr.contentType);
alert("Length: " + xdr.responseText.length);
} function err()
{
alert("XDR onerror");
} function timeo()
{
alert("XDR ontimeout");
} function loadd()
{
alert("XDR onload");
alert("Got: " + xdr.responseText);
} function progres()
{
alert("XDR onprogress");
alert("Got: " + xdr.responseText);
} function stopdata()
{
xdr.abort();
} function mytest()
{
var url = document.getElementById('tbURL');
var timeout = document.getElementById('tbTO');
if (window.XDomainRequest)
{
xdr = new XDomainRequest();
if (xdr)
{
xdr.onerror = err;
xdr.ontimeout = timeo;
xdr.onprogress = progres;
xdr.onload = loadd;
xdr.timeout = tbTO.value;
xdr.open("get", tbURL.value);
xdr.send();
}
else
{
alert("Failed to create");
}
}
else
{
alert("XDR doesn't exist");
}
}
</script>
</body>
</html>

See also

window
XMLHttpRequest

XDomainRequest object的更多相关文章

  1. Enable Cross-Origin Requests in Asp.Net WebApi 2[Reprint]

    Browser security prevents a web page from making AJAX requests to another domain. This restriction i ...

  2. Enabling Cross-Origin Requests in ASP.NET Web API 2

    Introduction This tutorial demonstrates CORS support in ASP.NET Web API. We’ll start by creating two ...

  3. HTTP访问控制(CORS)

    跨站 HTTP 请求(Cross-site HTTP request)是指发起请求的资源所在域不同于该请求所指向资源所在的域的 HTTP请求.比如说,域名A(http://domaina.exampl ...

  4. Cross-origin resource sharing--reference

    Cross-origin resource sharing (CORS) is a mechanism that allows many resources (e.g., fonts, JavaScr ...

  5. HTTP Server to Client Communication

    1. Client browser short polling The most simple solution, client use Ajax to sends a request to the ...

  6. 跨域资源共享(CORS)--跨域ajax

    几年前,网站开发者都因为ajax的同源策略而撞了南墙.当我们惊叹于XMLHttpRequest对象跨浏览器支持所带来的巨大进步时,我们很快发现没有一个方法可以使我们用JavaScript实现请求跨域访 ...

  7. js中的跨域

    因为javascript的同源策略,导致它普通情况下不能跨域,直到现在,我还是不能完全理解js跨域的几种方法,没办法,只能慢慢学习,慢慢积累,这不,几天又在园里看到一篇博文,有所收获,贴上来看看; 原 ...

  8. CoreCLR源码探索(一) Object是什么

    .Net程序员们每天都在和Object在打交道 如果你问一个.Net程序员什么是Object,他可能会信誓旦旦的告诉你"Object还不简单吗,就是所有类型的基类" 这个答案是对的 ...

  9. JavaScript Object对象

    目录 1. 介绍:阐述 Object 对象. 2. 构造函数:介绍 Object 对象的构造函数. 3. 实例属性:介绍 Object 对象的实例属性:prototype.constructor等等. ...

随机推荐

  1. 4-3 atom订阅源

    部分章节还没有实做练习. 网上购买了安道的Rails指南中文版.联系了这个作者问了一个问题Rails5的翻译问题. try(), 判断是否存在,不存在的话返回nil.例子:pasting @perso ...

  2. CentOS查看分区的方式

    看ls /dev然后挂载 df -T  只可以查看已经挂载的分区和文件系统类型 fdisk -l 可以显示出所有挂载和未挂载的分区,但不显示文件系统类型 parted -l 可以查看未挂载的文件系统类 ...

  3. 带分数(dfs,next_permutation)

    问题描述 100 可以表示为带分数的形式:100 = 3 + 69258 / 714. 还可以表示为:100 = 82 + 3546 / 197. 注意特征:带分数中,数字1~9分别出现且只出现一次( ...

  4. 装载问题(load)

    装载问题(load) 问题描述: 有一批共n 个集装箱要装上艘载重量为c 的轮船,其中集装箱i 的重量为wi.找出一种最 优装载方案,将轮船尽可能装满,即在装载体积不受限制的情况下,将尽可能重的集装箱 ...

  5. DB2性能调优

    1.更新统计信息 --更新数据库所有表统计信息 --连接到数据库(-v选项,表示要回显命令,以下同) db2 -v connect to DB_NAME --查看是否收集过统计信息,什么时候更新的   ...

  6. en_a

      1◆ai ay ei     2◆ au aw ɔː     3◆ a   eɪ æ ɑː ɔː ʌ   4◆ ar   ɔː ɑː ɜː   5◆ al ɑː ɔː   6◆ are air   ...

  7. jsp jsp常用指令

    jsp指令是为jsp引擎设计的,他们并不直接产生任何可见输出,而只是告诉引擎如何处理jsp页面中的其余部分. jsp中的指令 page指令 include指令 taglib指令 jsp指令的基本语法 ...

  8. Awk 从入门到放弃 (8) 动作总结之三

    awk continue 语句  awk exit 语句  awk if  语句  awk next 语句 awk break 语句

  9. hadoop kafka install multi-borker (7)

    multi-borker function like cluster technology First we make a config file for each of the brokers (o ...

  10. 使用Mockito时遇到的一些问题

    最近在使用Mockito时遇到了几个比较tricking的问题,在这里记录一下. 1.如果方法的参数或者返回类型是泛型通配符相关的(如<?>,<? extends XXX>), ...