Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 27.04.2015, 23:20
Интересующийся
Отправить личное сообщение для lucky89 Посмотреть профиль Найти все сообщения от lucky89
 
Регистрация: 27.10.2014
Сообщений: 16

Как отправить форму на другой домен?
Здравствуйте!
Нужно отправлять некоторые данные на сторонний сервер методом post (домен другой). Если сделать без js, элементарно только тегом <form>, то все прекрасно работает, я оказываюсь на страничке указанной в action и вижу сообщение, что данные успешно получены.
Чтобы на другую страницу не переходить и данные отправлялись в автоматически стал пробовать jquery, а именно $.ajax, $.post и сколько бы я не подбирал настройки и не читал в интернете всегда получаю ошибку:
XMLHttpRequest cannot load https://api.thor-cpa.com/..... No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://evacrm.ru' is therefore not allowed access. The response had HTTP status code 400.
Объясните почему через <form> все отправляется, а средствами js вдруг у меня нет прав доступа?
Как это можно реализовать без php, curl, необходимости переходить на другую страницу?
Удаленный сервер не мой в .htaccess ничего разрешить не могу.
Неужели js не может просто повторить то же, что происходит при событии onsubmit только не переходя на другую страницу, а сделав все в фоне, мне тут даже асинхронность не нужна...
Ответить с цитированием
  #2 (permalink)  
Старый 27.04.2015, 23:26
Аватар для Safort
Профессор
Отправить личное сообщение для Safort Посмотреть профиль Найти все сообщения от Safort
 
Регистрация: 23.12.2013
Сообщений: 1,856

lucky89, нет, не может, т.к. с другого домена не было получено разрешение на отправку запросов. Подобные ограничения были сделаны специально для большей безопасности.
Ответить с цитированием
  #3 (permalink)  
Старый 27.04.2015, 23:37
Интересующийся
Отправить личное сообщение для lucky89 Посмотреть профиль Найти все сообщения от lucky89
 
Регистрация: 27.10.2014
Сообщений: 16

Ну а почему <form> может, curl может в чем принципиальная разница?
Ответить с цитированием
  #4 (permalink)  
Старый 28.04.2015, 00:48
Аватар для Safort
Профессор
Отправить личное сообщение для Safort Посмотреть профиль Найти все сообщения от Safort
 
Регистрация: 23.12.2013
Сообщений: 1,856

lucky89,
в том, что <form> отправляет конкретные поля, у него нет доступа к параметрам браузера, cookies и другим хранилищам, а у JS - есть. Curl - это вообще серверная часть, там и не нужны ограничения.
Ответить с цитированием
  #5 (permalink)  
Старый 28.04.2015, 12:01
Аватар для Vlasenko Fedor
Профессор
Отправить личное сообщение для Vlasenko Fedor Посмотреть профиль Найти все сообщения от Vlasenko Fedor
 
Регистрация: 13.03.2013
Сообщений: 1,572

Можно так попробовать если форма отправляет
function buildElement(tagName, props) {
    var element = document.createElement(tagName);
    for (var propName in props) element[propName] = props[propName];
    return element;
}

function submit(link, props) {
    var form = buildElement('form', {method: 'post', action: link});
    for (var propName in props) form.appendChild( 
        buildElement('input', {type: 'hidden', name: propName, value: props[propName]})
    );
    document.body.appendChild(form);
    form.submit();
    document.body.removeChild(form);
}

submit('index.php', {name: 'Ivan', year: '25'});
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как узнать домен из js? MakTpaxep Общие вопросы Javascript 3 14.10.2016 14:22
Как изменить css одного div при наведении на другой с javascript? InkyThousand Общие вопросы Javascript 7 11.11.2014 16:35
Не могу отправить форму методом PUT Danxil AJAX и COMET 5 25.06.2014 13:22
Как вы относитесь к наркоманам? Maxmaxmaximus7 Оффтопик 7 05.02.2014 13:29
Переменная от переменной или как к имени переменной конкатенировать значение другой Aderba jQuery 5 12.11.2008 15:25