إعداد ملفات تعريف الارتباط في القضبان مع المجال الخيار
-
20-09-2019 - |
سؤال
أنا أحاول أن تعيين ملف تعريف الارتباط في مجال واحد من آخر.هل هذا ممكن ؟
هذا ما أفعله في التطبيق:
في وحدة تحكم اختبار العمل يتم الوصول إليها عبر هذا الرابط:
def test
cookies[:foo] = {
:value => 'something',
:domain => 'myapp.heroku.com'
}
end
في نفس وحدة تحكم ، test2 العمل يتم الوصول إليها عبر هذا الرابط:
http://myapp.heroku.com/account/test2
def test2
puts "foo=#{cookies[:foo]}"
end
ولكن قيمة الكوكيز[:فو] دائما فارغة.هل من الممكن الوصول إلى تعريف الارتباط من heroku.com المجال.ظننت إعداد :المجال الخيار سيسمح هذا.
شكرا
المحلول
في :المجال خيار (تحديد المجال على ملفات تعريف الارتباط في العام) فقط يعمل حقا عبر النطاقات الفرعية.أيبالنسبة app1.mysite.com و app2.mysite.com - يمكنك تعيين ملف تعريف الارتباط المجال .mysite.com ويكون ذلك مشترك بين المجالات الفرعية.
هذا هو فقط كيف الكوكيز هي مصممة للعمل.myapp.com و myapp.heroku.com هي مجالات منفصلة ، وليس النطاقات الفرعية ، حتى محاولة تعيين المجال بهذه الطريقة لن تعمل.
هناك بعض الطرق لتحقيق الحقيقية عبر ملفات تعريف الارتباط المجال - ولكن هم المشاركة بدلا من ذلك.
نصائح أخرى
لا يمكنك أن تفعل هذا على مجال مختلف, ولكن يمكنك أن تفعل ذلك على المجالات الفرعية.لذا ، على سبيل المثال ،
التطبيق يعمل على المجال example.com
يمكن تعيين ملف تعريف ارتباط subdomain.example.com
ولكن ليس exampleapp.com
.
عندي إضافة إذا كان من الممكن تعيين ملفات تعريف الارتباط الأخرى التعسفي المجالات ، لن يكون هناك ضخمة الأمن/الخصوصية.
يمكنك تعيين نفس الكوكيز لجميع المجالات الخاصة بك عن طريق القيام بما يلي في البيئة.rb:
ActionController::CgiRequest::DEFAULT_SESSION_OPTIONS[:session_domain => '.mydomain.com']
انظر هنا للحصول على الوثائق.
قد ترغب في التحقق http://coderack.org/users/ahamid/middlewares/142-session-injector