使用方法GET使用URLRequest / URLStream可以自定义标头?

时间:2008-10-21 20:11:55

标签: actionscript-3 http-headers

非常简单:

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请求发送自定义标头?

2 个答案:

答案 0 :(得分:6)

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

在任何情况下,您可能希望查看as3httpclient是否符合您的目的,并让您解决此问题。以下是此库开发人员博客中post的相关摘录:

  

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

答案 1 :(得分:6)

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

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

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