Я использовал jsonp для устранения ошибки cors, но как мне устранить ошибку, при которой обратный вызов также выдает ошибку cors?

#javascript #security #web #axios #cors

#язык JavaScript #Безопасность #сеть #аксиос #корс

Вопрос:

Я использовал jsonp для устранения ошибки cors, но как мне устранить ошибку, при которой обратный вызов также выдает ошибку cors?

Вот мой первоисточник.

 cctvControl.test = function () {  console.log(`${this.port}`);  axios.put(`http://localhost:${this.port}/openplayer`, {  baseinfo: {  action: "livertsp",  uid: "CAM-2-S208-ES-C136111",  url: "rtsp://wowzaec2demo.streamlock.net/vod/mp4:BigBuckBunny_175k.mov",  loginid: "",  loginpw: "",  wndwidth: "400",  wndheight: "300",  wndposx: "200.1",  wndposy: "200.1"  }  }); };  

Но этот источник {customerData: {… }}

index.do:1 Доступ к XMLHttpRequest по адресу ‘http://localhost:19108/openplayer» от происхождения «http://localhost:8080» заблокирован политикой CORS: на запрошенном ресурсе отсутствует заголовок «Управление доступом-Разрешить-Происхождение».- ошибка.

Итак, я установил тип данных: jsonp следующим образом и переписал его для вызова openplay в методе обратного вызова.

 function makeTheCall(queryString) {  console.log(`${this.port}`);  var destinationUrl = `http://localhost:19108/openplayer`;  $.ajax({  type: 'PUT',  url: destinationUrl,  data: {  "baseinfo": {  "action": "livertsp",  "uid": "CAM-2-S208-ES-C136111",  "url": "rtsp://wowzaec2demo.streamlock.net/vod/mp4:BigBuckBunny_175k.mov",  "loginid": "",  "loginpw": "",  "wndwidth": "400",  "wndheight": "300",  "wndposx": "200",  "wndposy": "200"  }  },  dataType: 'jsonp',  jsonpCallback: 'myCallBackMethod',  async: false, // this is by default false, so not need to mention  crossDomain: true // tell the browser to allow cross domain calls.  // success: successResopnse, jsonpCallback will call the successCallback  // error: failureFunction jsonp does not support errorCallback. So cannot use this  }); }  window.myCallBackMethod = function(data) {  successResponse(data);  console.log(data);  // axios.put(`http://localhost:19108/openplayer`, {  // "baseinfo": {  // "action": "livertsp",  // "uid": "CAM-2-S208-ES-C136111",  // "url": "rtsp://wowzaec2demo.streamlock.net/vod/mp4:BigBuckBunny_175k.mov",  // "loginid": "",  // "loginpw": "",  // "wndwidth": "400",  // "wndheight": "300",  // "wndposx": "200.1",  // "wndposy": "200.1"  // }  // }) }  successResponse = function(data) {  //functionality goes here;  console.log(data);  axios.put(`http://localhost:19108/openplayer`, {  "baseinfo": {  "action": "livertsp",  "uid": "CAM-2-S208-ES-C136111",  "url": "rtsp://wowzaec2demo.streamlock.net/vod/mp4:BigBuckBunny_175k.mov",  "loginid": "",  "loginpw": "",  "wndwidth": "400",  "wndheight": "300",  "wndposx": "200.1",  "wndposy": "200.1"  }  }) }  // the json response from the server when calling the url must be in the below format only.  myCallBackMethod({ "customerData": { "name": "testName", "age": 26 } }) // makeTheCall(); }  

I get the same CORS error in window.myCallBackMethod and successResponse.

CCTV обычно открывается, когда вы помещаете данные basinfo в localhost:19108/openplayer и запрашиваете их методом put. Но я продолжаю получать ошибки cors.

Мне интересно, как подойти к решению этой проблемы.

С наилучшими пожеланиями!