0

http://profiles.ucsf.edu/Thumbnail.ashx?id=4926871に画像があり、src.sencha.io で実行しようとしましたが、http://src.sencha.io のようなことをすると/80/http://profiles.ucsf.edu/Thumbnail.ashx?id=4926871の場合、src.sencha.io から 400 エラー (Bad Request) が返されます。

?文字をエスケープしようとしましたが ( http://src.sencha.io/80/http://profiles.ucsf.edu/Thumbnail.ashx%3Fid=4926871 )、それもうまくいきませんでした。

念のためダブルエスケープも試みましたが ( http://src.sencha.io/80/http://profiles.ucsf.edu/Thumbnail.ashx%253Fid=4926871 )、ダイスはありませんでした。

私は、profiles.ucsf.edu が不安定なコンテンツ タイプを返すかどうかを確認しましたが、image/jpeg を返すので、それはクールなはずです。

URL の末尾にsrc.sencha.io を追加&.jpgして、ファイル拡張子に依存しているかどうかを確認しようとしましたが、うまくいきませんでした。

Sencha フォーラムのスレッドに基づいて、 http://src6.sencha.io/80/http://profiles.ucsf.edu/Thumbnail.ashx? id=4926871を試しましたが、運もありませんでした。

イメージを別の場所にコピーし、URL パラメータを持たない URL で src.sencha.io を実行すると、動作します。http://imgur.com/L91W7にアップロードし、http ://src.sencha.io/80/http://imgur.com/L91W7.pngでアクセスしようとしましたが、問題ありませんでした。

src.sencha.io を profile.ucsf.edu の URL とうまく連携させるためにできることはありますか?それとも運が悪いのでしょうか?

4

1 に答える 1

3

送信元サーバーが HTTP Content-length ヘッダーを設定していない (またはチャンクを使用していない):

sh-4.1$ wget http://profiles.ucsf.edu/Thumbnail.ashx?id=4926871
--2012-09-26 14:50:53--  http://profiles.ucsf.edu/Thumbnail.ashx?id=4926871
Resolving profiles.ucsf.edu... 64.54.132.33
Connecting to profiles.ucsf.edu|64.54.132.33|:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: unspecified [image/jpeg]

現在、src.sencha.io は、Content-length ヘッダーを省略し、チャンク エンコーディングを使用しない HTTP 応答では失敗します。これは、サーバーがリソースの制約のために応答サイズをチェックすることによる副作用です。400 ステータスは、実際には制約違反が原因で操作が失敗したという点でやや紛らわしいですが、400 応答ページでは入力パラメーターの正確性についてのみ説明されています。

これは、画像が別の HTTP サーバーにコピーされたときにリクエストが機能する理由を説明しています。そのサーバーは Content-length ヘッダーを設定しています。

sh-4.1$ wget http://imgur.com/L91W7.png
--2012-09-26 15:05:05--  http://imgur.com/L91W7.png
Resolving imgur.com... 54.243.206.51, 23.23.110.81, 23.23.110.58
Connecting to imgur.com|54.243.206.51|:80... connected.
HTTP request sent, awaiting response... 301 Moved Permanently
Location: http://i.imgur.com/L91W7.png [following]
--2012-09-26 15:05:05--  http://i.imgur.com/L91W7.png
Resolving i.imgur.com... 72.21.81.253
Connecting to i.imgur.com|72.21.81.253|:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 72842 (71K) [image/png]

現時点で私が知っている唯一の回避策は、HTTP サーバーがチャンクされた応答を送信するか、Content-length ヘッダーを設定するように調整することです。HTTP 1.1 仕様では、接続を閉じるためサーバーの応答が許可されますが、src.sencha.io は現在その応答を受け入れません。

サーバーは IIS 6.0 です。Content-length ヘッダーの省略が IIS 6.0 の既知のバグであるかどうかを確認するために少し調査を行いました。結果は決定的ではありません。この問題を引き起こす可能性のある「静的ファイルを圧縮する」オプションについての話がありますが、ニシンである可能性があります。この投稿で説明されているように、問題はどこかの壊れたプロキシにある可能性があります。

ところで、これを診断するときは、Content-length ヘッダー (!) が欠落している HTTP 応答を追加するか、応答をチャンク化したものに変換する「クライアント側」のネットワーク デバイスをよく目にすることに注意してください。そのため、100% クリーンな接続があり、プロキシやその他の悪意を誘発するボックスが邪魔をしないマシンからテストしてください。

于 2012-09-26T21:29:47.123 に答える