আমি জড়িত একটি সেটআপ আছে
সম্মুখভাগের সার্ভার (নোড.জেএস, ডোমেন: লোকালহোস্ট: 3000) <---> ব্যাকএন্ড (জাজানো, অ্যাজাক্স, ডোমেন: লোকালহোস্ট: 8000)
ব্রাউজার <- ওয়েব অ্যাপ <- নোড.জেএস (অ্যাপ্লিকেশন পরিবেশন করুন)
ব্রাউজার (ওয়েব অ্যাপ্লিকেশন) -> অ্যাজাক্স -> জ্যাঙ্গো (এজাক্স পোস্টের অনুরোধগুলি পরিবেশন করুন)
এখন, এখানে আমার সমস্যাটি সিওআরএস সেটআপের সাথে রয়েছে যা ওয়েব অ্যাপ ব্যাকএন্ড সার্ভারে অ্যাজাক্স কলগুলি করতে ব্যবহার করে। ক্রোমে, আমি পেতে থাকি
শংসাপত্রের পতাকাটি সত্য হলে অ্যাক্সেস-কন্ট্রোল-মঞ্জুরি-উত্সে ওয়াইল্ডকার্ড ব্যবহার করতে পারবেন না।
ফায়ারফক্সেও কাজ করে না।
আমার নোড.জেএস সেটআপটি হ'ল:
var allowCrossDomain = function(req, res, next) {
res.header('Access-Control-Allow-Origin', 'http://localhost:8000/');
res.header('Access-Control-Allow-Credentials', true);
res.header('Access-Control-Allow-Methods', 'GET,PUT,POST,DELETE');
res.header("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept");
next();
};
এবং জ্যাঙ্গোতে আমি এই মিডলওয়্যারগুলিও সাথে ব্যবহার করছি
ওয়েব অ্যাপ্লিকেশন অনুরোধ করে:
$.ajax({
type: "POST",
url: 'http://localhost:8000/blah',
data: {},
xhrFields: {
withCredentials: true
},
crossDomain: true,
dataType: 'json',
success: successHandler
});
সুতরাং, ওয়েব অ্যাপ্লিকেশন প্রেরণের অনুরোধ শিরোনামগুলি দেখে মনে হচ্ছে:
Access-Control-Allow-Credentials: true
Access-Control-Allow-Headers: "Origin, X-Requested-With, Content-Type, Accept"
Access-Control-Allow-Methods: 'GET,PUT,POST,DELETE'
Content-Type: application/json
Accept: */*
Accept-Encoding: gzip,deflate,sdch
Accept-Language: en-US,en;q=0.8
Cookie: csrftoken=***; sessionid="***"
এবং এখানে প্রতিক্রিয়া শিরোনাম:
Access-Control-Allow-Headers: Content-Type,*
Access-Control-Allow-Credentials: true
Access-Control-Allow-Origin: *
Access-Control-Allow-Methods: POST,GET,OPTIONS,PUT,DELETE
Content-Type: application/json
কোথায় আমি ভুল যাচ্ছি?!
সম্পাদনা 1: আমি ব্যবহার করছি chrome --disable-web-security
, কিন্তু এখন জিনিসগুলি আসলে কাজ করতে চায়।
সম্পাদনা 2: উত্তর:
সুতরাং, আমার জন্য django-cors-headers
কনফিগার সমাধান :
CORS_ORIGIN_ALLOW_ALL = False
CORS_ALLOW_CREDENTIALS = True
CORS_ORIGIN_WHITELIST = (
'http://localhost:3000' # Here was the problem indeed and it has to be http://localhost:3000, not http://localhost:3000/
)
http
, এটি /
শেষে রয়েছে। আমি মনে করি যে এইচটিপি ছাড়াই কাজ করতে পারে তবে আমি কয়েক বছর ধরে এই জিনিসটিতে সত্যই কাজ করিনি, সুতরাং এখন কী কাজ করে তা সত্যিই জানেন না!