При отправке формы с помощью URLRequest, как включить файлы cookie из сеанса браузера?
-
19-08-2019 - |
Вопрос
(В отношении этот ответ:)
Когда я отправляю POST с URLRequest, включает ли он автоматически файлы cookie из сеанса браузера, в котором размещен Flash?Если нет, то как я могу включить их или, если необходимо, получить их и включить самостоятельно?
Решение
Если домены cookie (страницы, на которой размещен элемент управления Flash и URL-адрес, который вы публикуете) совпадают, то да, файлы cookie браузера отправляются с запросом по умолчанию. В качестве быстрого примера ( рабочая версия здесь ) я собрал простую страницу ColdFusion, на которой размещается SWF-файл, содержащий следующий код:
<mx:Script>
<![CDATA[
private function btn_click():void
{
var req:URLRequest = new URLRequest("http://test.enunciato.org/test.cfm");
req.method = URLRequestMethod.POST;
var postData:URLVariables = new URLVariables();
postData.userName = "Joe";
postData.userCoolness = "very-cool";
req.data = postData;
navigateToURL(req);
}
]]>
</mx:Script>
<mx:Button click="btn_click()" label="Submit" />
... и на этой странице я установил файл cookie с именем " USERID " со значением " 12345 " ;. После нажатия кнопки «Отправить» и перехода к другому CFM в журналах моего сервера обнаруживаются файлы cookie, пропущенные в запросе:
POST /test.cfm HTTP / 1.1 Mozilla / 5.0
ASPSESSIONIDAASRDSRT = INDFAPMDINJLOOAHDELDNKBL;
JSESSIONID = 60302395a68e3d3681c2;
USERID = 12345
test.enunciato.org 200
Если вы сами это проверите, вы увидите там и postData.
Имеет смысл?
Другие советы
Я предполагаю, что вы просто не хотите включать что-то вроде идентификатора сеанса для аутентификации на стороне сервера.
Чтобы получить файл cookie браузера от AS (необходимо включить JavaScript, это не должно быть проблемой для большинства пользователей)
public var cookieStr:String;
public var cookieHeader:URLRequestHeader;
ExternalInterface.call('eval','window.cookieStr = function () {return document.cookie};')
cookieStr = ExternalInterface.call('cookieStr');
cookieHeader = new URLRequestHeader("Cookie",cookieStr);
Затем при использовании вашего объекта URLRequest:
var urlRequest:URLRequest = new URLRequest(...blah blah, url here, etc etc);
urlRequest.requestHeaders.push(cookieHeader);
Обратите внимание, что Firefox не отправляет файлы cookie сеанса вместе с URLRequest. Для решения этой проблемы вам потребуется решение, аналогичное приведенному выше.
Не уверен насчет вспышки.Но не могли бы вы сериализовать файл cookie и поместить его в URL-адрес?
Возможно, вы захотите зашифровать данные или передать их в виде обычного текста, но это может выглядеть так:
URL:
www.example.com?newurl&cookiesession=true&cookieusername=bob
и т. д.
(или я что-то упускаю?)