Возникла необходимость посылать запрос в ajax'e через чужой сайт, так как запросы принимаются только с него. Использую расширение, чтобы иметь возможность слать запрос, но так как я не только шлю запрос на другой сайт, но и с другого отсылаю, поэтому приходится делать windows.open() с каким-то GET запросом (например ?accept) и отлавливать его и с этого окна уже слать AJAX.
Вопрос: можно ли как-то не мудрить с windows.open()? Это выходит не очень хорошо, так как при открытии страницы, тратится время на ее загрузку и в добавок всплывающее окно закрывает обзор пользователю на короткое время.
Вот пример кода:
var geturl = window.location.href.split('?')[1];
$(document).on('click', 'button', function() {
window.open('https://first-site.com?accept');
});
//так как это расширение, то работает и в window.open() который открылся выше
if(geturl == 'accept'){
$.ajax({
url: 'https://second-site.com/accept',
data: {
dataid: '...',
passid: '...',
},
type: 'POST',
success: function(){window.close();}
});
}
Возможно вам поможет jsonp
$.ajax({
dataType: 'jsonp',
data: 'id=10',
url: 'http://myotherserver.com/getdata',
success: function () {
// do stuff
},
});
https://learn.javascript.ru/ajax-jsonp
Альтернативный путь сделать что-то вроде прокси на своем сайте. Посылаете аякс запрос на свой сайт, а там уже PHP скрипт делает запрос на другой сайт и возвращает ответ.
Сборка персонального компьютера от Artline: умный выбор для современных пользователей