Javascript-форум (https://javascript.ru/forum/)
-   jQuery (https://javascript.ru/forum/jquery/)
-   -   Кроссдоменный ajax-запрос (https://javascript.ru/forum/jquery/39560-krossdomennyjj-ajax-zapros.html)

Rayn82 04.07.2013 09:55

Кроссдоменный ajax-запрос
 
Здравствуйте. Возникла проблема при составлении ajax запроса на другой сервер. Задача я упростил: отправить текстовую строку на другой сервер, там скрипт запрос получает, и отсылает какой-то ответ клиенту. Вот собственно код:
function test(){
 
            $.ajaxSetup({
                beforeSend: function(xhr) {
                    xhr.setRequestHeader('Access-Control-Allow-Origin', 'http://domen2.mu/');
                }
            });
 
            var text = "b";
            $.ajax({
                url: "http://domen2.mu/test/check2.php",
                type: "post",
                processData: false,
                data: text,
                xhrFields: {
                    withCredentials:true
                },
                success: function(data){
                    alert( "Прибыли данные: " + data );
                }
            });
 
        }

На сервере чисто учебный тестовый скрипт в три строки, который прост отправляет строку.
В результате хром выдает такую ошибку ошибку:
Код:

OPTIONS http://domen2.mu/test/check2.php Origin http://domen1.mu is not allowed by Access-Control-Allow-Origin. jquery-1.10.0.min.js:6
XMLHttpRequest cannot load http://domen2.mu/test/check2.php. Origin http://domen1.zz.mu is not allowed by Access-Control-Allow-Origin.

Добавление заголовка Access-Control-Allow-Origin с параметром http://domen2.mu/, не помогла. После выполнения скрипта я его в списке заголовков так и не увидел. Пробовал писать headers прямо в теле ajax-запроса, результат тот же. Хотелось бы, конечно, использовать именно $.ajax для такого запроса, но если решения не будет, то буду смотреть в сторону полноценного XHR2 Подскажите где я ошибся.

devote 04.07.2013 10:01

Цитата:

Сообщение от Rayn82
xhr.setRequestHeader('Access-Control-Allow-Origin', 'http://domen2.mu/');

это должен посылать вам сервер, а не вы серверу

danik.js 04.07.2013 10:02

Ха ха. А в чем по-твоему тогда смысл заголовка Access-Control-Allow-Origin если злоумышленник (как ты думаешь) может выставить его значение по своему желанию?
Разрешение должен давать сервер, а не скрипт.
Сервер как бы должен сказать: я разрешаю xhr запросы с домена такого-то.
А в твоем случае получается скрипт говорит: я разрешаю себе запросить со своего домена данные с чужого сервера, аха ха гы гы))

Rayn82 04.07.2013 18:38

Чувствую кому-то стоит подучить матчасть)

Спасибо, все получилось)

Yorks 26.04.2015 12:54

Есть неплохое решение, но с использованием php:
1. Создаём в своём домене файл PHP, php вполне нормально может прочитать файл с другого домена и даже его обработать при необходимости.
2. Создаём AJAX запрос к своему php-файлу и работаем с данными.

Решение конечно не на чистом JS, но это решение.


Часовой пояс GMT +3, время: 19:03.