Страницы

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

воскресенье, 15 декабря 2019 г.

Как сделать кросс-доменный AJAX POST запрос?

#javascript #html #jquery #ajax #post


Есть форма с инпутами. При клике на кнопку "Отправить", браузер делает пост запрос
на указанный адрес и пользователь попадает на новую страницу. Это стандартный алгоритм
работы 
. Задача заключается в том, чтобы заменить это дело на AJAX. Чтобы пользователь ввёл данные, нажал на кнопку и увидел сообщение об успешной отправке, но сам не перенаправлялся на другую страницу. Проблема в том, что домен, на который делается POST запрос отличается от того, с которого идёт запрос. Прочитал о том, что это можно сделать с помощью CORS. Но, как я понял, там сервер должен вернуть результат о том, разрешает ли он такой запрос или нет. А существует ли метод решения поставленной задачи, который бы не спрашивал разрешения у сервера? Существует ли метод фонового POST запроса на другой домен --- такой, чтобы ничего не настраивать дополнительно на сервере? Буду признателен, если кто-нибудь приведёт пример. UPDATE Я изменил dataType на jsonp, но, как мне подсказали, получается GET, а не POST запрос.


Ответы

Ответ 1



Можно создать скрытую форму, у которой target указывает на скрытый же iframe, заполнить ее из скрипта и отправить. Ограничение - ответ от сервера таким образом не получить.

Ответ 2



там сервер должен вернуть результат о том, разрешает ли он такой запрос или нет. Да. А существует ли метод решения поставленной задачи, который бы не спрашивал разрешения у сервера? Отправка формы браузером. Можно настроить отправку в iframe, но доступа к его содержимому не будет. К url вроде должен быть - vk использует этот способ для авторизации, если не ошибаюсь. Отправка запроса со своего сервера. Т. е. скрипт шлёт данные тебе, ты их берёшь и пересылаешь туда, куда надо, получаешь ответ и шлёшь его скрипту. Я ведь могу с сервера делать запросы. Почему нельзя их делать с сайта? Разве так безопаснее? На сервере нет кук пользователя, нет никаких пользовательских данных с того сайта и т. д. Т. е. отправляемый запрос никак не связан с конкретным пользователем того сайта и не может ему навредить - поэтому да, для пользователя это безопасно.

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

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