【问题标题】:XmlHttp: How to get the actual statusText from an msxml.xmlhttp object?XmlHttp:如何从 msxml.xmlhttp 对象中获取实际的 statusText?
【发布时间】:2011-01-10 14:35:47
【问题描述】:

Web 服务器正在返回状态代码和描述以响应XmlHttp 组件的请求。来自服务器的实际状态响应开始于:

HTTP/1.1 400 Not a valid http POST request

我可以通过Fiddler 跟踪看到:

但是当我询问 statusstatusText 的 xmlHttp 请求时,它会显示状态文本的“标准”描述,而不是实际状态文本:

xmlHttp.status: 200
xmlHttp.statusText: "Bad Request"

我可以在开发 IDE 中看到:

我查看了IXMLHttpRequest 的所有其他属性,但找不到包含响应的实际 状态文本的任何属性。它甚至不在任何response headers

Server: ASP.NET Development Server/8.0.0.0
Date: Thu, 28 Jan 2010 21:03:16 GMT
X-AspNet-Version: 2.0.50727
X-LSI-Proxy-Identificaton: {65B76AB2-8A28-4A2B-B282-7E1FDC9DBCA1}
Cache-Control: no-cache
Pragma: no-cache
Content-Type: text/xml; charset=utf-8
Content-Length: 4652
Connection: Close

Internet Explorer、Chrome 和 FireFox 设法读取实际状态文本:

如何从 Microsoft xmlHttp 对象中获取实际的 statusText

【问题讨论】:

    标签: msxml xmlhttprequest xmlhttprequest-states


    【解决方案1】:

    不幸的是,作为 HTTP/1.1 RFC 的一部分,代码 400 被定义为错误请求,而 XMLHTTP(更可能是 URLMON 或 WinHTTP)只是在转换数字并忽略传递的状态文本。由于状态行是协议的一部分而不是响应标头,因此它没有在响应标头列表中定义是有意义的。

    但是我认为浏览器只是“正确”地显示状态文本,因为它们显示的是与它一起发送的自定义 HTML 页面,该页面在 HEAD 元素中将该文本作为 TITLE。

    【讨论】:

    • 看起来你在这两个方面都是对的。 (1) xmlhttp 使用的是默认状态描述,而不是返回的,(2) 标题包含html标题,而不是http状态码和statusText。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-04-20
    • 2015-07-19
    • 2012-10-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多