عند نشر نموذج مع urlrequest ، كيفية تضمين ملفات تعريف الارتباط من جلسة المتصفح؟

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

  •  19-08-2019
  •  | 
  •  

سؤال

(بالاستناد الى هذا الجواب:)

عندما أقوم بنشر عنوان URLRequest ، هل يتضمن تلقائيًا ملفات تعريف الارتباط من جلسة المتصفح التي يتم استضافتها في الفلاش؟ إذا لم يكن الأمر كذلك ، فكيف يمكنني جعلها تضمهم ، أو إذا لزم الأمر استردادها وإدراجها بنفسي؟

هل كانت مفيدة؟

المحلول

شريطة أن تكون مجالات ملفات تعريف الارتباط (من الصفحة التي تستضيف التحكم في الفلاش وعنوان URL الذي تنشره) ، ثم نعم ، يتم إرسال ملفات تعريف الارتباط للمتصفح مع الطلب افتراضيًا. كمثال سريع (نسخة العمل هنا) ، لقد ألقيت معًا صفحة 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" />

... وفي تلك الصفحة ، قمت بتعيين ملف تعريف ارتباط ، يسمى "userId" ، بقيمة "12345". بعد النقر فوق الإرسال ، والانتقال إلى CFM آخر ، تكشف سجلات الخادم الخاصة بي عن ملف تعريف الارتباط الذي تم تمريره في الطلب:

post /test.cfm http/1.1 mozilla/5.0
aspsessionidaasrdsrt = indfapmdinjlooahdeldnkbl ؛
JSessionID = 60302395A68E3D3681C2 ؛
userId = 12345
Test.Enunciato.org 200

إذا قمت باختباره بنفسك ، فسترى ما بعد الدهون هناك أيضًا.

منطقي؟

نصائح أخرى

أفترض أنك فقط لن تضم شيئًا مثل معرف الجلسة لأغراض المصادقة إلى جانب الخادم.

للحصول على ملف تعريف ارتباط المتصفح من 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

إلخ

(أو أفتقد شيئًا؟)

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top