From 33058f2b292b3a581333bdfb21b8f671898c5060 Mon Sep 17 00:00:00 2001 From: Peter Bengtsson Date: Tue, 8 Dec 2020 14:40:17 -0500 Subject: initial commit --- files/zh-cn/web/api/xdomainrequest/index.html | 186 ++++++++++++++++++++++++++ 1 file changed, 186 insertions(+) create mode 100644 files/zh-cn/web/api/xdomainrequest/index.html (limited to 'files/zh-cn/web/api/xdomainrequest') diff --git a/files/zh-cn/web/api/xdomainrequest/index.html b/files/zh-cn/web/api/xdomainrequest/index.html new file mode 100644 index 0000000000..dd7dce2899 --- /dev/null +++ b/files/zh-cn/web/api/xdomainrequest/index.html @@ -0,0 +1,186 @@ +--- +title: XDomainRequest +slug: Web/API/XDomainRequest +tags: + - AJAX + - API + - IE + - JavaScript + - Web + - 废弃 + - 微软 + - 非标准 +translation_of: Web/API/XDomainRequest +--- +

{{obsolete_header}}

+ +

{{non-standard_header}}

+ +

摘要

+ +

XDomainRequest是在IE8和IE9上的HTTP access control (CORS) 的实现,在IE10中被 包含CORS的XMLHttpRequest 取代了,如果你的开发目标是IE10或IE的后续版本,或想要支待其他的浏览器,你需要使用标准的HTTP access control

+ +

该接口可以发送GET和POST请求

+ +

语法

+ +
var xdr = new XDomainRequest();
+ +

返回XDomainRequest的实例,该实例可以被用来生成或管理请求。

+ +

属性

+ +
+
{{domxref("XDomainRequest.timeout")}}
+
获取或设置请求的过期时间。
+
{{domxref("XDomainRequest.responseText")}}
+
以字符串形式获取响应体。
+
+ +

方法

+ +
+
{{domxref("XDomainRequest.open()")}}
+
根据指定的方法(GET或POST)和URL,打开请求。
+
{{domxref("XDomainRequest.send()")}}
+
发送请求。POST的数据会在该方法中被指定。
+
{{domxref("XDomainRequest.abort()")}}
+
中止请求。
+
+ +

事件处理程序

+ +
+
{{domxref("XDomainRequest.onprogress")}}
+
当请求中发送方法和onload事件中有进展时的处理程序。
+
{{domxref("XDomainRequest.ontimeout")}}
+
当请求超时时的事件处理程序。
+
{{domxref("XDomainRequest.onerror")}}
+
当请求发生错误时的处理程序。
+
{{domxref("XDomainRequest.onload")}}
+
当服务器端的响应被完整接收时的处理程序。
+
+ +

例子

+ +
if(window.XDomainRequest){
+  var xdr = new XDomainRequest();
+
+  xdr.open("get", "http://example.com/api/method");
+
+  xdr.onprogress = function () {
+    //Progress
+  };
+
+  xdr.ontimeout = function () {
+    //Timeout
+  };
+
+  xdr.onerror = function () {
+    //Error Occured
+  };
+
+  xdr.onload = function() {
+    //success(xdr.responseText);
+  }
+
+  setTimeout(function () {
+    xdr.send();
+  }, 0);
+}
+ +
 
+ +
+

注意: 如果多个XDomainRequests同时被发送,一些请求可能会丢失,为避免这种情况,xdr.send()的调用应被包裹在setTimeout方法中(见{{domxref("window.setTimeout()")}})。

+
+ +

安全

+ +

XDomainRequest为了确保安全构建,采用了多种方法。

+ + + +

标准

+ +

该接口及其方法没有遵循标准。

+ +

浏览器兼容性

+ +

{{ CompatibilityTable() }}

+ +
+ + + + + + + + + + + + + + + + + + + +
FeatureChromeFirefox (Gecko)Internet ExplorerOperaSafari
XDomainRequest{{ CompatNo() }}{{ CompatNo() }}8.0-9.x{{ CompatNo() }}{{ CompatNo() }}
+
+ +
+ + + + + + + + + + + + + + + + + + + +
FeatureAndroidFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
XDomainRequest{{ CompatNo() }}{{ CompatNo() }}{{ CompatUnknown() }}{{ CompatNo() }}{{ CompatNo() }}
+
+ + -- cgit v1.2.3-54-g00ecf