VPN CORS নিষ্ক্রিয় করতে পারে না, এটি প্রতিক্রিয়া বদলে দেয়
নতুন প্রস্থান ঠিকানা দুটি উৎসকে এক করে না। CORS প্রয়োগকে দোষারোপ করার আগে দুই পথের প্রতিক্রিয়া হেডার ধরে তুলনা করুন।
একসাথে বদলে যাওয়া দুটি জিনিস আলাদা করে শুরু করুন: নেটওয়ার্ক পথ এবং ব্রাউজারের প্রয়োগ। একটি VPN প্রস্থান ঠিকানা বদলায়; এটি পাতার উৎস বদলায় না, কারণ উৎস স্কিম, হোস্ট ও পোর্ট দিয়ে গঠিত। এখন অনুরোধ সফল হলে প্রতিক্রিয়ার কিছু বদলেছে, অথবা অনুরোধটিই বদলেছে। কোনটি তা বের করাই পুরো তদন্ত।
CORS একটি হেডার প্রোটোকল যা ব্রাউজার প্রয়োগ করে, তাই নেটওয়ার্ক পথের কোনো কিছুই এটি বন্ধ করতে পারে না।
উৎস কোনো IP ঠিকানা নয়
একটি উৎস হলো একটি স্কিম, একটি হোস্ট ও একটি পোর্ট। এটি সেই ঠিকানা নয় যেখান থেকে প্যাকেট বের হয়, এবং এটি সার্ভার যে IP দেখে সেটিও নয়। এজন্যই একটি VPN প্রতিটি দৃশ্যমান ঠিকানা বদলে উৎস অপরিবর্তিত রাখতে পারে। ব্রাউজার প্রতিক্রিয়ার Access-Control-Allow-Origin কে পাতার উৎসের সঙ্গে তুলনা করে, আর প্রস্থান ঠিকানা কখনো সেই তুলনায় ঢোকে না।
তাই যে এক্সটেনশন বা প্রক্সি CORS ত্রুটি সারাচ্ছে বলে মনে হয়, তারা অন্য কিছু করছে: হেডার পুনর্লিখন করছে, অথবা অনুরোধ এমনভাবে রুট করছে যাতে তা আর ক্রস-অরিজিন না হয়। কোনোটিই VPN-এর বৈশিষ্ট্য নয়।
ব্রাউজার আসলে যা পাঠায়
যে ক্রস-অরিজিন অনুরোধ সরল নয়, তার জন্য ব্রাউজার আগে একটি প্রাক-যাচাই OPTIONS পাঠায়, যা অভিপ্রেত মেথড ও হেডার বহন করে। সার্ভারকে তার অনুমোদিত অনুমতিগুলো দিয়ে উত্তর দিতে হয়, এবং সেই উত্তর নিয়ম মেটালেই আসল অনুরোধ এগোয়। একটি VPN দুটি বিনিময় বহনকারী পথ বদলায় এবং মধ্যবর্তী সেবাগুলো কী উত্তর দেয় তা বদলে দিতে পারে। এটি উৎসের স্ট্রিং বা প্রাক-যাচাইয়ের শর্ত বদলায় না।
কমান্ড-লাইন ক্লায়েন্ট সাধারণত এসবের কিছুই দেখায় না। এটি Origin হেডার না-ও পাঠাতে পারে, প্রায়ই প্রাক-যাচাই এড়িয়ে যায়, এবং ভিন্ন ক্রেডেনশিয়াল বহন করতে পারে। curl-এর কাছে ফেরত আসা বডি প্রমাণ করে সার্ভার curl-কেই উত্তর দিয়েছে।
যে প্রতিক্রিয়া বদলেছে তা খুঁজুন
শুধু স্ট্যাটাস কোড নয়, প্রতিটি পথের প্রকৃত প্রতিক্রিয়া তুলনা করুন। CORS অনুমতি বহনকারী হেডার, কনটেন্ট টাইপ, যেকোনো রিডাইরেক্ট, এবং কোনো WAF বা CDN ভ্যারিয়েন্ট ভিন্ন পাতা তৈরি করেছে কি না দেখুন। আঞ্চলিক প্রত্যাখ্যান, প্রমাণীকরণ রিডাইরেক্ট বা অনুমতি-হেডারহীন ত্রুটি পাতা—সবই ব্রাউজারে ব্যর্থ হয় অথচ CORS বাগের মতো দেখায়। এগুলো ডেলিভারি-পথের পার্থক্য, আর সেগুলোই নথিভুক্ত করার জিনিস।
দুই পথের প্রতিক্রিয়া হেডার ধরে লাইন ধরে তুলনা করুন। যদি একমাত্র পার্থক্য হয় একটি ত্রুটি পাতায় Access-Control-Allow-Origin অনুপস্থিত থাকা, তবে আপনি কারণ খুঁজে পেয়েছেন।
প্রয়োগ নয়, সেবাটি ঠিক করুন
সেবাটি যখন আপনার, তখন অনুমোদিত উৎস ও অনুরোধের বৈশিষ্ট্য স্পষ্টভাবে লিখুন, তারপর তার ফ্রন্টএন্ড ও মধ্যবর্তীরা যে ত্রুটি তৈরি করে তা পড়ুন। না করলে সেবার মালিককে একটি পরিশোধিত তুলনা পাঠান। সেই প্রতিবেদনে কখনো কুকি, অনুমোদন হেডার বা সেশন এক্সপোর্ট রাখবেন না, কারণ নীতি যে ক্রেডেনশিয়াল রক্ষার জন্য আছে সেগুলোই তা।
CORS নিষ্ক্রিয় করে এমন ব্রাউজার এক্সটেনশন এড়িয়ে চলুন। তারা নিরাপত্তা সীমা বদলায় অথচ যে প্রতিক্রিয়া-পার্থক্য ব্যাখ্যা করা দরকার তা লুকায়, এবং অন্য প্রতিটি ব্যবহারকারীর জন্য একই ব্যর্থতা রেখে দেয়।
দুই প্রতিক্রিয়া, ব্যবহৃত উৎস এবং নেওয়া পথ লিখে রাখুন। সেই রেকর্ড VPN গুজবকে সেবার বাগে পরিণত করে।