При размещении формы через URLRequest, как включить куки из сеанса браузера? - PullRequest
4 голосов
/ 22 января 2009

(Применительно к этот ответ :)

Когда я отправляю POST с URLRequest, он автоматически включает файлы cookie из сеанса браузера, в котором размещается Flash? Если нет, то как я могу заставить их включать их или, если необходимо, извлекать их и включать их самостоятельно?

Ответы [ 3 ]

8 голосов
/ 22 января 2009

Если домены 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.

Имеет смысл?

1 голос
/ 14 июля 2009

Я предполагаю, что вы просто не хотите включать что-то вроде идентификатора сеанса для аутентификации на стороне сервера.

Чтобы получить файл 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, вам потребуется решение, аналогичное приведенному выше, для решения этой проблемы.

0 голосов
/ 22 января 2009

Не уверен насчет вспышки. Но не могли бы вы сериализовать cookie и поместить его в URL?

Возможно, вы захотите зашифровать данные или передать их в виде простого текста, но это может выглядеть следующим образом:

URL:

www.example.com?newurl&cookiesession=true&cookieusername=bob

и т.д.

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

...