11.09.2013

Кроссдоменные запросы при помощи easyXDM

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

Документация:
http://easyxdm.net - официальный сайт плагина
http://habrahabr.ru/post/120336/ - статья на Хабре
https://github.com/oyvindkinsey/easyXDM - директория на GitHub
Этого мне хватило, чтобы разобраться, как без особых проблем отправлять POST-запросы на API, находящийся на поддомене.

Тест кроссбраузерной авторизации
<form id="myForm" method="POST">
    <div>
        <input type="text" id="name" name="Name" class="k-textbox" />
    </div>
    <div>
        <input type="text" id="password" name="Password" class="k-textbox" />
    </div>
    <input type="submit" value="Отправить" class="k-button" />
</form>
<script>
   
    $('#myForm').ajaxForm({
        beforeSubmit: function (arr, form, options) {
            //if (options.url.indexOf(location.host) < 0) { // если хост удаленный то используем наш метод
            var json = {};
            for (var i = 0; i < arr.length; i++) { // преобразуем сериализованные данные формы в нормальный объект js готовый к нашей сериализации (сама форма их передает в весьма странном виде)
                json[arr[i].name] = btoa(arr[i].value);
            }
            rpc.request({
                    // шлем кросс доменный запрос, подставляя наши параметры
                    url: apiRoute + "auth",
                    method: "POST",
                    data: json,
                    headers: {
                        'RequestVerificationToken': token
                    }
                }, function (response) {
                    alert('Success');
                }, function (response) {
                    alert('Error\n' + response.message);
                    return false;
                });
            return false; //останавливаем нативный ajax запрос от jQ
            //}
            //return false;
        }
    });

    var rpc = new easyXDM.Rpc({
            remote: apiRoute + "Scripts/EasyXDM"
        },
        {
            local: {
                request: {}
            },
            remote: {
                request: {}
            }
        });
</script>

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

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