cabeçalhos personalizados possíveis com URLRequest / URLStream usando o método GET?
-
03-07-2019 - |
Pergunta
Muito simples:
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);
No entanto, se eu inspecionar o tráfego com o Wireshark, o my-bespoke-header
não está sendo enviada. Se eu mudar para URLRequestMethod.POST
e acrescentar alguns dados para req.data
, em seguida, o cabeçalho é enviado, mas o aplicativo de recebimento requer um GET não um POST.
A documentação menciona uma lista negra de cabeçalhos que não são enviados. my-bespoke-header
não é um desses. É possivelmente vale a pena mencionar que o pedido originário é de uma porta diferente no mesmo domínio. Nada é relatado no log de policyFile, por isso parece improvável, mas isso é algo que pode ser remediado pela força o carregamento de um crossdomain.xml com um allow-http-request-headers-from
apesar do fato de que esta não é uma questão crossdomain? Ou é simplesmente um recurso não documentado do Flash Player que ele só pode enviar cabeçalhos personalizados com um pedido POST?
Solução
Desde que eu possa reunir, parece que sua suposição sobre a falta de cabeçalhos personalizados suporte para HTTP GET é de fato um recurso não documentado (ou um bug?) Nas bibliotecas padrão.
Em qualquer caso, você pode querer ver se as3httpclient caberia suas finalidades e deixe você contornar esse problema. Aqui está um trecho relevante de um pós no blog do desenvolvedor deste biblioteca:
"Eu não era capaz de definir o cabeçalho de um HTTP / GET pedido. Macromedia flash Player permite definir apenas o cabeçalho para solicitações POST. Eu discuti isso problemas com Ted Patrick e ele me disse como eu pode nos soquete para alcançar o desejado e ele foi muito gentil para dar um me trecho de código, o que me pegou começado. "
Outras dicas
Se esta limitação foi indocumentados ao mesmo tempo, que não é mais o caso. Veja:
http://livedocs.adobe.com/ flex / 3 / langref / flash / net / URLRequest.html # requestHeaders
"[...] Devido às limitações do navegador, HTTP personalizados cabeçalhos de solicitação são suportados apenas para solicitações POST, não para solicitações GET. [...]"