#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.
Мне интересно, как подойти к решению этой проблемы.
С наилучшими пожеланиями!