URLRequestでフォームをPOSTするとき、ブラウザセッションからのCookieを含める方法は?

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

  •  19-08-2019
  •  | 
  •  

質問

この回答:)

URLRequestでPOSTを実行すると、FlashがホストされているブラウザーセッションからのCookieが自動的に含まれますか?そうでない場合、どうすればそれらを含めることができますか、必要に応じてそれらを取得して自分で含めることができますか?

役に立ちましたか?

解決

Cookieドメイン(Flashコントロールをホストしているページと投稿先のURL)が一致すると、デフォルトでブラウザーCookieがリクエストとともに送信されます。簡単な例(ここに作業バージョン)として、次のコードを含む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" />

...そしてそのページでは、<!> quot; 12345 <!> quot;の値を持つ<!> quot; USERID <!> quot;というCookieを設定します。 [送信]をクリックして別のCFMに移動すると、サーバーログに、リクエストで渡されたCookieが表示されます。

  

POST /test.cfm HTTP / 1.1 Mozilla / 5.0
  ASPSESSIONIDAASRDSRT = INDFAPMDINJLOOAHDELDNKBL;
  JSESSIONID = 60302395a68e3d3681c2;
   USERID = 12345
  test.enunciato.org 200

自分でテストすると、そこにもpostDataが表示されます。

理にかなっていますか

他のヒント

サーバー側の認証のためにセッションIDのようなものを含めたくないだけだと思います。

ASからブラウザCookieを取得するには(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とともにセッションのCookieを送信しないことに注意してください。この問題を解決するには、上記と同様のソリューションが必要です。

フラッシュについてはわかりません。しかし、Cookieをシリアル化してURLに入れることはできませんでしたか?

データを暗号化するか、プレーンテキストで送信することもできますが、次のようになります。

url:

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

etc

(または何か不足していますか?)

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top