4

Webサーバーは、 XmlHttpコンポーネントによる要求に応答して、ステータスコードと説明を返します。サーバーからの実際のステータス応答は、次のように始まります。

HTTP/1.1 400 Not a valid http POST request

Fiddlerのトレースで確認できます。

代替テキスト

しかし、xmlHttpリクエストにステータスstatusTextを要求すると、実際のステータステキストではなく、ステータステキストの「標準」の説明が表示されます。

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

これは開発IDEで見ることができます:

代替テキスト

IXMLHttpRequestの他のすべてのプロパティを調べましたが、応答の実際のステータステキストを含むプロパティが見つかりません。応答ヘッダーのいずれにも含まれていません:

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を取得するにはどうすればよいですか?

4

1 に答える 1

2

残念ながら、コード400はHTTP / 1.1 RFCの一部として不正な要求として定義されており、XMLHTTP(URLMONまたはWinHTTPの可能性が高い)は数値を変換し、渡されたステータステキストを無視しています。ステータス行はプロトコルの一部であり、応答ヘッダーではないため、応答ヘッダーのリストで定義されていないことは理にかなっています。

ただし、ブラウザはステータステキストを「正しく」表示しているだけであると主張します。これは、ブラウザがHEAD要素のタイトルとしてそのテキストを含む送信されたカスタムHTMLページを表示しているためです。

于 2010-01-29T05:28:59.890 に答える