আমি আমার নোড.জেএস অ্যাপ্লিকেশনে সিওআরএসকে সমর্থন করার চেষ্টা করছি যা এক্সপ্রেস.জেএস ওয়েব ফ্রেমওয়ার্ক ব্যবহার করে। এটি কীভাবে পরিচালনা করতে হয় সে সম্পর্কে আমি একটি গুগল গ্রুপ আলোচনা পড়েছি এবং সিওআরএস কীভাবে কাজ করে সে সম্পর্কে কয়েকটি নিবন্ধ পড়েছি। প্রথমত, আমি এটি করেছি (কোডটি কফিস্ক্রিপ্ট সিনট্যাক্সে লেখা আছে):
app.options "*", (req, res) ->
res.header 'Access-Control-Allow-Origin', '*'
res.header 'Access-Control-Allow-Credentials', true
# try: 'POST, GET, PUT, DELETE, OPTIONS'
res.header 'Access-Control-Allow-Methods', 'GET, OPTIONS'
# try: 'X-Requested-With, X-HTTP-Method-Override, Content-Type, Accept'
res.header 'Access-Control-Allow-Headers', 'Content-Type'
# ...
এটি কাজ করে বলে মনে হচ্ছে না। দেখে মনে হচ্ছে আমার ব্রাউজারটি (ক্রোম) প্রাথমিক বিকল্পগুলির অনুরোধ প্রেরণ করছে না। আমি যখন কেবলমাত্র সংস্থানটির জন্য ব্লকটি আপডেট করেছি তখন আমাকে ক্রস-উত্স GET অনুরোধ জমা দিতে হবে:
app.get "/somethingelse", (req, res) ->
# ...
res.header 'Access-Control-Allow-Origin', '*'
res.header 'Access-Control-Allow-Credentials', true
res.header 'Access-Control-Allow-Methods', 'POST, GET, PUT, DELETE, OPTIONS'
res.header 'Access-Control-Allow-Headers', 'Content-Type'
# ...
এটি (ক্রোমে) কাজ করে। এটি সাফারিতেও কাজ করে।
আমি এটা পড়েছি ...
সিওআর বাস্তবায়নকারী ব্রাউজারে প্রতিটি ক্রস-অরিজিন জিইটি বা পোষ্ট অনুরোধের আগে একটি অপশন অনুরোধ থাকে যা জিইটি বা পোষ্ট ঠিক আছে কিনা তা যাচাই করে।
সুতরাং আমার মূল প্রশ্নটি হল, আমার ক্ষেত্রে এটি কীভাবে ঘটবে বলে মনে হয় না? আমার app.options ব্লক কেন বলা হয় না? আমার প্রধান অ্যাপ.জেট ব্লকে আমাকে শিরোনামগুলি কেন সেট করতে হবে?