Сиёсати CORS дар дархостҳои AJAX дар JavaScript
Тавассути AJAX наметавонед оддӣ ба дигар вебсайтҳо дархост фиристед (cross-origin requests). Чунин дархостҳо тавассути сиёсати CORS танзим карда мешаванд. Ба хулоса, тибқи ин сиёсат, вебсайте, ки шумо дархост ба он фиристед, бояд ба посух додан ба он розӣ бошад. Барои ин, он бояд сарсуратҳои HTTP-и мувофиқро фиристед.
Биёед дар амал санҷем.
Ду сервери тестиро дар портҳои гуногун меандозем. Якум дар
3001, ва дуюм дар 3002.
Биёед аз вебсайти дуюм ба вебсайти якум дархости AJAX бифиристем.
Бигзор вебсайти якум барои қабули дархостҳои зерин омода бошад:
export default {
'/handler/': function({ body }) {
console.log(body);
return 'success';
}
}
Аз вебсайти дуюм ба вебсайти якум дархост мефиристем:
button.addEventListener('click', function() {
let promise = fetch('http://localhost:3001/handler/', {
method: 'post',
body: JSON.stringify([1, 2, 3, 4, 5]),
headers: {
'Content-Type': 'application/json',
},
});
});
Дар натиҷа дархост иҷро намешавад, ва дар консоли браузер мо хатоеро мебинем, ки ба сиёсати CORS марбут аст.
Барои он ки дархост иҷро шавад, сервери якум бояд сарсуратҳои HTTP-и махсусро фиристед. Биёед онҳоро муайян кунем - ва дархост аз вебсайти дуюм ба вебсайти якум гузаштан мегирад:
export default {
'/handler/': function({ body, resp }) {
resp.setHeader('Access-Control-Allow-Origin', '*');
resp.setHeader('Access-Control-Allow-Headers', '*');
console.log(body);
return 'success';
}
}