非常简单:

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 的crossdomain.xml来解决,尽管事实是这不是跨域问题吗?或者它只是Flash Player的一个未记录的功能,它只能通过POST请求发送自定义标头?

有帮助吗?

解决方案

从我可以收集的内容来看,似乎您对缺少自定义标头支持HTTP GET的假设确实是标准库中的一个未记录的功能(或错误?)。

在任何情况下,您可能想看看 as3httpclient 是否符合您的目的并让你解决这个问题。以下是此开发者博客中发布的相关摘录。库:

  

“我无法设置标题   HTTP / GET请求。 Macromedia Flash   播放器允许您仅设置标题   对于POST请求。我讨论过这个   特德帕特里克问题,他告诉我   我怎样才能让我们的Socket实现   希望,他非常友好地给予一个   我的代码片段,它让我   开始"

其他提示

如果这种限制一次没有记录,那就不再是这种情况了。参见:

http://livedocs.adobe.com/挠曲/ 3 / langref /闪光/净/ URLRequest.html#requestHeaders

" [...] 由于浏览器的限制,自定义HTTP请求标头仅支持POST请求,不支持GET请求。 [...]"

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top