مشکل crossdomain یا cors در nodejs


#1

دوستان من این ارور رو خیلی میگیرم دلیلش و چگونگی رفع کردنش رو میشه بهم بگین برای چی این ارور اصلا میاد و اجازه کراس دامین لوکال خودمون رو نمیده؟

localhost/:1 Access to fetch at ‘http://localhost:3001/savemsg’ from origin 'http://localhost:3000
has been blocked by CORS policy: No ‘Access-Control-Allow-Origin’ header is present on the requested resource. If an opaque response serves your needs, set the request’s mode to ‘no-cors’ to fetch the resource with CORS disabled.


#2

دلیلش امنیتی هست.
ربطی به لوکال نداره همیشه جلوی cross domain گرفته میشه مگر اینکه توی http header رسما گفته باشیم که اجازه بده.

چندتا راه حل داره، یکیش استفاده از پلاگینهای بروزر هست که برای دستکاری headerها ساخته شدن.
یه راه دیگش اینه که ببینیم منظور سیستم ما از لوکال دقیقا چیه. شاید سرور داره با 127.0.0.1 کار میکنه و ما داریم از http://localhost درخواست میکنیم (و سیستم فکر میکنه این دوتا یکی نیستن)
یه راه دیگش تغییر هدر هست. نمیدونم توی nodejs چطوری باید انجام بشه.


#3

وقتی از یه پورت به پورت دیگه ریکوئست میدی این اتفاق میوفته. برای تغیر هدر با express

app.use(function(req, res, next) {
    res.header("Access-Control-Allow-Origin", "*");  
    res.header("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept");
    next();
});

یا میتونید از افزونه هایی که برا برخی مرورگرها هست استفاده کنین مثل

https://chrome.google.com/webstore/detail/allow-control-allow-origi/nlfbmbojpeacfghkpbjhddihlkkiljbi


#4

مرسی اون دو خط دوم جواب داد البته با کلی سلام صلوات:grinning: