একটি AJAX প্রতিক্রিয়া একটি কুকি সেট করতে পারেন?


266

একটি AJAX প্রতিক্রিয়া একটি কুকি সেট করতে পারেন? তা না হলে আমার বিকল্প সমাধান কী? আমি এটি জাভাস্ক্রিপ্ট বা অনুরূপ কিছু দিয়ে সেট করা উচিত?


আমি নোড.জেএস এক্সপ্রেস ব্যবহার করছি। আমি লক্ষ্য করেছি যে আপনি যদি এটি করেন তবে আপনাকে সার্ভারের দিকে খুব স্পষ্টতই httpOnly ক্ষেত্রটিকে মিথ্যা হিসাবে সেট করতে হবে।
চং ঠোঁট ফ্যাং

উত্তর:


247

হ্যাঁ , আপনি সার্ভার-সাইড কোডে ঠিক তেমনই AJAX অনুরোধে কুকি সেট করতে পারেন যেহেতু সাধারণ অনুরোধের জন্য আপনি যেমন করতেন কারণ সার্ভার একটি সাধারণ অনুরোধ বা AJAX অনুরোধের মধ্যে পার্থক্য করতে পারে না।

AJAX অনুরোধগুলি সার্ভারে অনুরোধ করার একটি বিশেষ উপায়, সার্ভারের কোনও HTTP অনুরোধের মতো প্রতিক্রিয়া জানাতে হবে। অনুরোধের প্রতিক্রিয়াতে আপনি কুকি যুক্ত করতে পারেন।


39
মনে রাখবেন এইচটিটিপি এজেন্ট দ্বারা কুকি সম্মানিত হবে কিনা তা অন্য গল্প another
ফ্রেঞ্চি পেনভ

6
@ ফ্রেঞ্চি: একমত তবে আমি মনে করি যে প্রশ্নটি কেবল এইচটিএমএপি ক্লায়েন্টদেরই বোধগম্য হয় যা কুকি সমর্থন করে। সুতরাং সমস্ত প্রশ্নকর্তা কেবল এটি জানতে আগ্রহী যে কুকিজ AJAX অনুরোধে রচনা করা যেতে পারে যার অর্থ তার ইউএ কুকি সমর্থন করে :)
এটি। __curious_geek

10
If the user agent supports HTTP State Management it should persist, discard and send cookies (as received in the Set-Cookie response header, and sent in the Cookie header) as applicable.- w3.org/TR/XMLHttpRequest
smwikedia

12
সার্ভারটি সেট-কুকি শিরোলেখ দ্বারা একটি অজ্যাক্স অনুরোধের জবাব দিতে পারলে এই উত্তর দেয়। এবং অবশ্যই এটি করতে পারে তবে প্রশ্নটি হল যে প্রতিক্রিয়াটির ফলস্বরূপ ফলিত হবে যে ক্লায়েন্টটি আজাক্স প্রতিক্রিয়াতে প্রাপ্ত কুকিটি পড়ে এবং সেট করে বা এটি ম্যানুয়ালি করতে হয়। এটি তার পক্ষে কোনও উত্তর নয়।
অ্যালেক্স

2
@ লেজেন্ডস আজাক্স অনুরোধগুলিতে এক্স-রিকভেস্টড-উইথ শিরোনামটি XMLHttpRequest এ সেট করা থাকে, এগুলি কীভাবে চিহ্নিত করা যায়, তবে এই শিরোনাম ছাড়াই একটি অনুরোধ করা যেতে পারে, যদি এটি ঘটে তবে এটি কোনও সাধারণ পৃষ্ঠা লোড থেকে আলাদা করা যায় না
T0m

292

মতে XMLHttpRequest- এর জন্য W3 বৈশিষ্ট অধ্যায় 4.6.3 একটি ইউজার এজেন্ট সেট-কুকি হেডার সম্মান করা উচিত নয়। সুতরাং উত্তর হ্যাঁ আপনি সক্ষম হওয়া উচিত।

উদ্ধৃতি:

যদি ব্যবহারকারী এজেন্ট এইচটিটিপি স্টেট ম্যানেজমেন্টকে সমর্থন করে তবে এটি প্রযোজ্য হিসাবে কুকিগুলি (সেট-কুকি প্রতিক্রিয়া শিরোনামে প্রাপ্ত হিসাবে এবং কুকির শিরোনামে প্রেরণ করা) প্রেরণ করা উচিত।


1
আইএইচ, এক্সএইচআর প্রতিক্রিয়াগুলির ক্ষেত্রে প্রতিক্রিয়াগুলিতে সেট-কুকি শিরোনামকে সমর্থন করে?
detj

এটি পুনঃনির্দেশের মতো হওয়া উচিত এবং এটি কিছু ব্রাউজারে সম্মান দেয় না।
ওয়াল্টার ম্যাকম্বিরা

1
আমার জন্য ক্রোম ব্যবহার করার জন্য, এজ্যাক্স অনুরোধে প্রাপ্ত শিরোনামগুলি স্বয়ংক্রিয়ভাবে ক্লায়েন্টের সাথে প্রয়োগ হবে।
অ্যালেক্স

আমি দেখতে পেলাম যে সার্ভার সাইড যদি জিজিপ হিসাবে প্রতিক্রিয়া ফিরিয়ে দেয় তবে কুকি সেট হয় না। এটি কি অনুমানের অংশ হওয়ার কথা বা এটি কেবল একটি বাস্তবায়ন সমস্যা?
juminoz

89

রেকর্ডের জন্য, পরামর্শ দিন যে উপরের সমস্তগুলি (এখনও) সত্য তবেই যদি এজেএক্স কলটি একই ডোমেনে করা হয়। আপনি যদি এজেএক্স ব্যবহার করে অন্য ডোমেনে কুকি সেট করার বিষয়ে সন্ধান করছেন, আপনি কীটগুলির সম্পূর্ণ ভিন্ন ক্যান খুলছেন । ক্রস-ডোমেন কুকিজ পড়া কার্যকর হয়, তবে (বা কমপক্ষে সার্ভারটি তাদের পরিবেশন করে; আপনার ক্লায়েন্টের ইউএ আপনার কোডটি সেগুলিতে অ্যাক্সেস করার অনুমতি দেয় কিনা তা আবার অন্য একটি বিষয়; ২০১৪ সালের মতো তারা করে)।


26
ক্রস-ডোমেন কুকিজ প্রেরণ করতে, আপনাকে শংসাপত্রের পতাকা সহ সেট করতে হবে
aeosynth

5
ক্রস-ডোমেন দৃশ্যের জন্য, 3 টি জিনিস হওয়া দরকার: - (1) ক্লায়েন্টকে অবজেক্টের withCredentials=trueজন্য সেট করতে হবে xhr(2) Access-Control-Allow-Credentialsঅপশন প্রিফলাইট অনুরোধের পাশাপাশি আসল অনুরোধে উভয় সেট করুন (3) প্রয়োজন মতো কুকি সেট করুন
কুণাল

6

আপনার সার্ভারটি একটি অ-http অনুরোধে সুরক্ষিত কুকিজ সেট করছে না তাও পরীক্ষা করে দেখুন। সবেমাত্র আমার অজাক্স অনুরোধটি "সুরক্ষিত" সেট সহ পিএইচপি সেশন পাচ্ছে। যেহেতু আমি https এ ছিল না এটি সেশন কুকিটি ফেরত পাঠাচ্ছে না এবং প্রতিটি অজেক্স অনুরোধে আমার সেশনটি পুনরায় সেট করা হচ্ছে।


আপনি কি আমাকে বলতে পারবেন, আমি কোথায় পরীক্ষা করতে পারি এজ্যাক নিরাপদ সেট করা আছে?
জিম্পার

1
এটি সত্যই এজাক্স নির্দিষ্ট নয়। আপনি যদি অনিরাপদ ব্যবহার করে থাকেন তবে সার্ভার থেকে সেট-কুকির শিরোনাম প্রতিক্রিয়াতে "সুরক্ষিত" সন্ধান করুন http: //
ফিল
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.