非常简单:
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请求发送自定义标头?
答案 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请求。 [...]”