0

私たちのサイトで ajax 呼び出しからエラーが発生するユーザーがいます。

エラーは以下に貼り付けます。

FF3 Windows ではエラーが発生しますが、IE では発生しません。

いくつかの検索に基づいて、この問題はクライアント プロトコルの squid が原因であることが多いようです (エラーの最後に squid が記載されています)。

私の ajax コードは、ここで使用されているものと同じです: http://www.w3schools.com/Ajax/ajax_browsers.asp

何か案は?

ERROR

The requested URL could not be retrieved

While trying to process the request:

POST /library/cart/cart_ajax.php?action=refreshCartWidget&qty=dontuse& HTTP/1.1
Host: mydomain.com
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.0.3) Gecko/2008092417 Firefox/3.0.3 (.NET CLR 3.5.30729)

Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: en-us,en;q=0.5
Accept-Encoding: identity,gzip,deflate
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive: 300

Connection: Close
Referer: http://mydomain.com/library

Pragma: no-cache
Cache-Control: no-cache

The following error was encountered:

Invalid Request
Some aspect of the HTTP Request is invalid. Possible problems:

Missing or unknown request method
Missing URL
Missing HTTP Identifier (HTTP/1.0)
Request is too large
Content-Length missing for POST or PUT requests
Illegal character in hostname; underscores are not allowed
Your cache administrator is webmaster. 
Generated Wed, 12 Nov 2008 09:28:58 GMT by ipwal3.osi-tech.com (squid/2.6.STABLE17)
4

3 に答える 3

2

時間を節約してjQueryを使用してください。Internet Explorer だけでなく、おそらく FF だけでなく、すべてのブラウザーで動作する ajax の抽象化があります。;-)そこにあるコードは古く、長い間更新されていないと思います。

jQuery での単純な ajax 呼び出しは次のとおりです。

$.post(
  '/the/url/to/post/to',
  { some: data },
  function(data) { alert(data); }
);

PUTまた、HTTP の基本 (リクエスト メソッド ( 、POSTGET、 )DELETEなど)を理解している場合にも役立ちますHEAD。貼り付けたエラーは、リクエストにヘッダーが含まれていないことを意味し、ほとんどのサーバー (すべてではないにしてもContent-Length) は、発行時にヘッダーが送信されることを期待しています。PUTPOST

おそらく IE はヘッダーを追加しますが、Firefox はそうではないようです。

jQuery がすべてを処理します。;)

于 2008-11-12T11:40:01.743 に答える
1

FF がそれを行わない場合は、XHR オブジェクトで .setRequestHeader() を使用してコンテンツの長さを設定できます。

.send(content) メソッドでデータを投稿しているので、その前に content.length でヘッダーを追加するだけです。

于 2008-11-12T12:15:52.107 に答える
0

ユーザーと一緒に座り、その間にFiddler HTTP トレース ツールを配置する必要があります。次に、IE と FF3 によって送信されたリクエストを簡単に比較できます。

このようにして、違いがどこにあり、なぜそれらが問題を引き起こしているのかが明らかになるはずです。

于 2008-11-12T12:42:59.930 に答える