【问题标题】:XDomainRequest - Get response body on errorXDomainRequest - 获取错误响应正文
【发布时间】:2012-05-10 13:22:37
【问题描述】:

我在使用 XDomainRequest onerror 处理程序时遇到问题。发生错误时,我似乎无法获取 HTTP 响应的正文(通过xdr.responseText)。成功的请求(200 OK)工作正常。

这是请求:

POST http://localhost/path HTTP/1.1
Accept: */*
Origin: http://localhost
Accept-Language: cs-CZ
Accept-Encoding: gzip, deflate
User-Agent: Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; WOW64; Trident/5.0)
Host: localhost
Content-Length: 34
Connection: Keep-Alive
Pragma: no-cache

[Data]

下面是回复:

HTTP/1.1 400 Bad Request
Content-Length: 54
Content-Type: application/json; charset=utf-8
Server: Microsoft-IIS/7.5
Access-Control-Allow-Origin: *
Date: Mon, 30 Apr 2012 20:57:32 GMT

[Data]

是否可以获取响应体?

【问题讨论】:

    标签: cors xdomainrequest


    【解决方案1】:

    很遗憾,无法在错误时获取响应正文。您只知道发生了错误。在这里查看我的相关问题:Is it possible to trap CORS errors?

    一种可能的解决方法(如果您可以控制服务器)是始终返回 HTTP 200,但在响应正文中包含错误代码。

    【讨论】:

    • 它怎么可能在 Chrome(使用 XmlHttpRequest)中工作?只是 XDomainRequest 的限制还是 Chrome 实现错误?
    • 很遗憾,我目前无法访问 Windows 框,但我可以验证 Chrome 确实返回了正文。请注意,IE 的 XDomainRequest 与 Chrome 的 XmlHttpRequest(第 2 级)是不同的对象,因此它们不必就行为达成一致。 IE10 将支持 XmlHttpRequest 和 CORS。
    • Firefox 的工作方式与 Chrome 相同。即使出现错误,我仍然可以得到响应。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-02-27
    • 1970-01-01
    • 2017-08-23
    • 1970-01-01
    • 2010-10-11
    相关资源
    最近更新 更多