مشکل crossdomain یا cors در nodejs

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

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.

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

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

1 Likes

وقتی از یه پورت به پورت دیگه ریکوئست میدی این اتفاق میوفته. برای تغیر هدر با 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

2 Likes

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