使用方法GET使用URLRequest / URLStream可以自定义标头?
-
03-07-2019 - |
题
非常简单:
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请求。 [...]"