JavaScript-daky AJAX haýyşlarynda CORS syýasaty
AJAX arkaly beýleki saýtlara haýyş etmek mümkin däl (cross-origin requests). Şeýle haýyşlar CORS syýasaty tarapyndan düzgünleşdirilýär. Gysgaça, bu syýasata görä, siziň haýyş iberýän saýtyňyz, haýyşyňyza jogap bermäge razy bolmaly. Bunuň üçin ol degişli HTTP çäglerini bermeli.
Amalyýetde synaýaly.
iki test serwerini dürli portlarda işledeli. Birinjisi
3001, ikinjisi bolsa 3002 portunda.
Ikinci saýtdan birinji saýta AJAX haýyş
iberip synaýaly.
Birinji saýt aşakdaky haýyşlary kabul etmäge taýýr:
export default {
'/handler/': function({ body }) {
console.log(body);
return 'success';
}
}
Ikinci saýtdan birinji saýta haýyş ibereli:
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',
},
});
});
Netijede haýyş ýerine ýetirilmez, brauzeriň konsolunda bolsa CORS syýasaty bile baglanyşykly ýalňyşlygy göreris.
Haýyşyň ýerine ýetirilmegi üçin, birinji serwer ýörite HTTP çäglerini bermeli. Olary nygtaýaly - we ikinji saýtdan birinji saýta haýyş geçip başlar:
export default {
'/handler/': function({ body, resp }) {
resp.setHeader('Access-Control-Allow-Origin', '*');
resp.setHeader('Access-Control-Allow-Headers', '*');
console.log(body);
return 'success';
}
}