Пользовательские заголовки возможны с помощью URLRequest / URLStream с использованием метода GET?
-
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
это не один из них.Возможно, стоит упомянуть, что исходящий запрос поступает с другого порта в том же домене.В журнале policyfile ничего не сообщается, поэтому это кажется маловероятным, но можно ли это исправить, принудительно загрузив a crossdomain.xml с помощью a allow-http-request-headers-from
несмотря на то, что это не проблема междоменности?Или это просто недокументированная функция Flash Player, которая заключается в том, что он может отправлять пользовательские заголовки только с запросом POST?
Решение
Из того, что я могу собрать, похоже, что ваше предположение об отсутствии поддержки пользовательских заголовков для HTTP GET действительно является недокументированной функцией (или ошибкой?) в стандартных библиотеках.
В любом случае, возможно, вы захотите посмотреть, есть ли as3httpclient это соответствовало бы вашим целям и позволило бы вам обойти эту проблему.Вот соответствующий фрагмент из Публикация в блоге разработчика этой библиотеки:
"Мне не удалось установить заголовок запроса HTTP / GET.Macromedia Flash Проигрыватель позволяет устанавливать заголовок только для запросов POST.Я обсудил эти проблемы с Тедом Патриком, и он рассказал мне как я могу использовать сокет для достижения желаемого, и он был очень любезен, предоставив мне фрагмент кода, который помог мне начать ".
Другие советы
Если когда-то это ограничение не было задокументировано, то теперь это уже не так.Видишь:
http://livedocs.adobe.com/flex/3/langref/flash/net/URLRequest.html#requestHeaders
"[...] Из-за ограничений браузера пользовательские заголовки HTTP-запросов поддерживаются только для запросов POST, а не для запросов GET. [...]"