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,则发送标头,但接收应用程序需要 GET 而不是 POST。

该文档提到了一个不会发送的标头黑名单。my-bespoke-header不是其中之一。可能值得一提的是,原始请求来自同一域上的不同端口。策略文件日志中没有报告任何内容,因此似乎不太可能,但是allow-http-request-headers-from尽管这不是跨域问题,但可以通过强制加载带有 a 的 crossdomain.xml 来解决这个问题吗?或者它只是 Flash Player 的一个未记录的功能,它只能通过 POST 请求发送自定义标头?

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 请求标头仅支持 POST 请求,不支持 GET 请求。 [...]”

于 2009-03-30T03:04:23.400 回答