Ajax POST на другой сервер - преодоление междоменных ограничений - PullRequest
1 голос
/ 07 мая 2011

Является ли единственный правильный способ достичь этого с помощью прокси? Я работаю над клоном clicktail (анализ взаимодействия с пользователем и отслеживание мыши), и у меня до сих пор есть скрипт, который будет отслеживать все взаимодействия с пользователем, публиковать их на моем сервере и сохранять в базе данных, но проблема заключается в том, Если этот сценарий добавлен к клиенту, который будет находиться в другом домене, публикация Ajax завершится ошибкой из-за ограничений междоменного сценария.

после прочтения об этом есть некоторые хаки, но я стараюсь их избегать. Кажется, что прокси - единственный способ обойти это. Но это, в свою очередь, представляет большую проблему для меня, так как любой клиент, который хочет использовать мой клон clicktail, также должен будет установить прокси-сервер в дополнение к добавленному на нем javascript. Это будет просто для веб-мастеров с PHP-сайтом, так как я могу предоставить сценарий, и они просто бьют его по своему серверу, но для сайтов .net им придется включить это в свое решение и перекомпилировать, может быть, я мог бы предоставить dll, но даже на это нужно ссылаться.

Я читал об этом HTML 5 window.postMessage -> и этом плагине jquery http://benalman.com/projects/jquery-postmessage-plugin/ это выглядит хорошо, и я думаю, что я не смогу использовать его для воспроизведения захваченных пользовательских взаимодействий, используя Iframes, но это не так t (по крайней мере, я не понимаю, как) решить проблему с междоменной публикацией AJAX. если бы вы оказались в моей ситуации, не могли бы вы опубликовать свое возможное решение?

1 Ответ

2 голосов
/ 09 апреля 2012

Кажется, что междоменные POST действительно возможны в вашей ситуации.Здесь Как отправить междоменный POST-запрос через JavaScript? обсуждали возможность настройки принимающего сервера с Access-Control-Allow-Origin.После этого вы можете сделать POST через jQuery:

$.ajax({
    type: 'POST',
    url: 'https://to.com/postHere.php',
    crossDomain: true,
    data: '{"some":"json"}',
    dataType: 'json',
    success: function(responseData, textStatus, jqXHR) {
        var value = responseData.someKey;
    },
    error: function (responseData, textStatus, errorThrown) {
        alert('POST failed.');
    }
});

Удачи!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...