UrlRequest와 함께 양식을 게시 할 때 브라우저 세션에서 쿠키를 포함시키는 방법은 무엇입니까?
-
19-08-2019 - |
문제
(을 참조하여 이 답변:)
UrlRequest로 게시 할 때 Flash가 호스팅되는 브라우저 세션의 쿠키를 자동으로 포함합니까? 그렇지 않은 경우 어떻게 포함 시키거나 필요한 경우 검색하여 직접 포함시킬 수 있습니까?
해결책
쿠키 도메인 (플래시 컨트롤을 호스팅하는 페이지 및 게시 중 URL)이 일치하는 경우, 그렇습니다. 그렇습니다. 브라우저 쿠키는 기본적으로 요청과 함께 전송됩니다. 빠른 예로 (여기서 작업 버전), 나는 다음 코드를 포함하는 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" />
... 그리고 그 페이지에서 나는 "12345"의 값으로 "userID"라는 쿠키를 설정했습니다. 제출을 클릭하고 다른 CFM으로 탐색 한 후 내 서버 로그는 요청에 전달 된 쿠키가 표시됩니다.
post /test.cfm http/1.1 Mozilla/5.0
aspsessionidaiasrdsrt = indfapmdinjlooahdeldnkbl;
jsessionID = 60302395A68E3D3681C2;
userID = 12345
test.enunciato.org 200
직접 테스트하면 사후 데이터도 표시됩니다.
이해가 되나요?
다른 팁
인증 목적으로 서버 측을 위해 세션 ID와 같은 것을 포함시키지 않아야한다고 가정합니다.
브라우저 쿠키를 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에 주목하십시오 하지 않습니다 세션의 쿠키를 urlrequest와 함께 보내려면이 문제를 극복하기 위해 위와 유사한 솔루션이 필요합니다.
플래시에 대해 확실하지 않습니다. 그러나 쿠키를 연속화하여 URL에 넣을 수 없습니까?
어쩌면 데이터를 암호화하거나 일반 텍스트로 전송하고 싶을 수도 있지만 다음과 같습니다.
URL :
www.example.com?newurl&cookiesession=true&cookieusername=bob
등
(아니면 뭔가 빠졌어?)