4

本当に簡単です:

var req:URLRequest=new URLRequest();
req.url="http://somesite.com";
var header:URLRequestHeader=new URLRequestHeader("my-bespoke-header","1");
req.requestHeaders.push(header);
req.method=URLRequestMethod.GET;
stream.load(req);

それでも、WireShark でトラフィックを検査すると、my-bespoke-header送信されていません。に変更しURLRequestMethod.POSTて一部のデータを追加するとreq.data、ヘッダーが送信されますが、受信側のアプリケーションには POST ではなく GET が必要です。

ドキュメントには、送信されないヘッダーのブラックリストが記載されています。my-bespoke-headerこれらの 1 つではありません。元のリクエストが同じドメインの別のポートからのものであることに言及する価値があるかもしれません。policyfile ログには何も報告されていないのでありそうにありませんが、これはクロスドメインのallow-http-request-headers-from問題ではないにもかかわらず、crossdomain.xml を強制的にロードすることで解決できるものでしょうか? それとも、POST リクエストでカスタム ヘッダーしか送信できないというのは、単に Flash Player の文書化されていない機能なのでしょうか?

4

2 に答える 2

6

私が収集できることから、HTTP GET のカスタムヘッダーサポートの欠如についてのあなたの仮定は、実際には標準ライブラリの文書化されていない機能 (またはバグ?) であるようです。

いずれにせよ、as3httpclientが目的に合っているかどうかを確認し、この問題を回避できるようにすることをお勧めします。このライブラリの開発者のブログの投稿からの関連するスニペットを次に示します。

「HTTP/GET リクエストのヘッダーを設定できませんでした。Macromedia Flash Player では、POST リクエストに対してのみヘッダーを設定できます。この問題について Ted Patrick と話し合ったところ、Socket を使用して目的のリクエストを達成する方法を教えてくれました。彼は私にコードスニペットをくれてとても親切で、それが私を始めさせました。」

于 2008-10-22T15:01:24.350 に答える
6

この制限がかつて文書化されていなかった場合、それはもはや当てはまりません。見る:

http://livedocs.adobe.com/flex/3/langref/flash/net/URLRequest.html#requestHeaders

「[...]ブラウザの制限により、カスタム HTTP リクエスト ヘッダーは、GET リクエストではなく、POST リクエストでのみサポートされています。 [...]」

于 2009-03-30T03:04:23.400 に答える