При отправке формы с помощью URLRequest, как включить файлы cookie из сеанса браузера?

StackOverflow https://stackoverflow.com/questions/467449

  •  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

и т. д.

(или я что-то упускаю?)

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top