Страницы

Поиск по вопросам

суббота, 14 декабря 2019 г.

Сделать кроссдоменный запрос к стороннему серверу

#jquery #xmlhttprequest


Подскажите, пожалуйста, как сделать кроссдоменный запрос к стороннему серверу на
jQuery ???
Тестировал на своем хостинге, и если делаю запрос с локального сервера на свой хостинг
то ответ я получу только в том случае если на хостинге в файле .htaccess явно прописано 
Header add Access-Control-Allow-Origin "*", 
может я чего не так понимаю, но хотелось бы узнать как сделать запрос не прописывая
такой строчки в .htaccess, и возможно ли это ?    


Ответы

Ответ 1



Можно: Есть небольшой трюк с PHP. И этот трюк будет работать не только с Google, но и с любыми сайтами, к которым у вас нет доступа и вы не можете добавить Access-Control-Allow-Origin * Нам нужно создать PHP-файл (например. getContentFromUrl.php) на нашем сервере и сделать обращение к нему. PHP JS $.ajax({ method: 'POST', url: 'getContentFromUrl.php', // link to your PHP file data: { // url куда наш сервер будет отправлять запрос, который мы не можем сделать через AJAX 'ext_url': 'https://stackoverflow.com/questions/6114436/access-control-allow-origin-error-sending-a-jquery-post-to-google-apis' }, success: function(data) { // теперь мы можем взять любые данные из внешнего url, потому что у нас есть вся страница var $h1 = $(data).find('h1').html(); $('h1').text($h1); }, error:function() { console.log('Error'); } }); Как это работает: Ваш браузер с помощью JS отправит запрос на ваш сервер Ваш сервер отправит запрос на любой другой сервер и получит ответ Ваш сервер отправит этот ответ в ваш JS файл И мы можем добавить event типа onClick на кнопку. Надеюсь, это поможет!

Ответ 2



Нет, это не возможно стандартными средствами JavaScript. Все дело в политике безопасности браузера, он требует подтверждения на стороне сервера, что такой запрос разрешен. Если сервер не отошлет специальный заголовок в ответ на Ajax запрос, то сам браузер блокирует ответ от сервера, хотя вы его получаете. Тут остается только использовать обходные пути. Можете почитать подробнее: http://learn.javascript.ru/xhr-crossdomain

Комментариев нет:

Отправить комментарий