Ao postar um formulário no URLRequest, como incluir cookies na sessão do navegador?

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

  •  19-08-2019
  •  | 
  •  

Pergunta

(Com referência a esta resposta:)

Quando posto com um URLRequest, ele inclui automaticamente cookies da sessão do navegador em que o flash está hospedado? Caso contrário, como posso fazê -lo incluí -los ou, se necessário, recuperá -los e incluí -los eu mesmo?

Foi útil?

Solução

Desde que os domínios de cookie (da página que hospeda o controle do flash e o URL para o qual você está postando) correspondem, então sim, os cookies do navegador são enviados com a solicitação por padrão. Como um exemplo rápido (Versão de trabalho aqui), Juntei uma página simples de fusão fria que hospeda um SWF contendo o seguinte código:

<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" />

... E nessa página, eu defino um cookie, chamado "UserID", com um valor de "12345". Depois de clicar em enviar e navegar para outro CFM, os registros do meu servidor revelam que o cookie passou na solicitação:

Post /test.cfm http/1.1 mozilla/5.0
AspsessionIDAasrdsrt = IndfapMdinjlooahdeldnkbl;
JSessionID = 60302395A68E3D3681C2;
UserID = 12345
test.enunciato.org 200

Se você testá -lo, verá os dados PostDatos lá também.

Faz sentido?

Outras dicas

Suponho que você simplesmente não inclua algo como um ID da sessão para fins de autenticação do lado do servidor.

Para obter o biscoito do navegador do AS (precisa de JavaScript ativado, não deve ser um problema para a maioria dos usuários)

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);

Então, ao usar seu objeto URLRequest:

var urlRequest:URLRequest = new URLRequest(...blah blah, url here, etc etc);
urlRequest.requestHeaders.push(cookieHeader);

Observe que o Firefox não Envie os cookies da sessão junto com um URLRequest, você precisará de uma solução semelhante à acima para superar esse problema.

Não tenho certeza sobre o flash. Mas você não poderia serializar o biscoito e colocá -lo no URL?

Talvez você queira criptografar os dados ou transmiti -los em texto simples, mas pode parecer:

URL:

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

etc.

(Ou estou perdendo alguma coisa?)

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top