@vostotskiy

Как реализовать CORS при для AJAX-запроса на JQuery?

Доброго времени суток.
Мне нужно реализовать авторизацию Phonegap-приложения на сервере через REST-API. Тестирую код приложения в Хроме. При выключенном плагине CORS не работают GET запросы, выдает ошибку
XMLHttpRequest cannot load api2.xxx.com/auth?api_key=yyy. No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'mmm.local' is therefore not allowed access.
При включенном плагине CORS GET -запрос уходит и возвращает все необходимые данные, после чего должен идти второй POST-запрос. Он не выполняется, возвращает ошибку такого плана
OPTIONS api2.xxx.com/token
yyy.local/:1 XMLHttpRequest cannot load api2.xxx.com/token. Response for preflight has invalid HTTP status code 405

Выдает 405 ошибку.
Я просмотрел материал по CORS, но те примеры не совсем подходят под мое задание.
Если можно, подскажите, в какую сторону копать, нужно ли настраивать CORS на сервере или что-то добавить в AJAX-запрос , чтобы выполнялись и POST и GET запросы без дополнительных плагинов(когда приложение по сути будет самостоятельной единицей.)
Привожу фрагмент кода для авторизации.
Заранее спасибо
$.ajax({
                type: "POST",
                crossDomain: true,
                url: config.apiUrl + "/token",
                processData: false,
                contentType: 'application/json',
                data: JSON.stringify(ss),
                success: function (response) {
                    localStorage.accesstoken = response.AccessToken;
                    console.log(response);
                    if (localStorage.getItem('accesstoken') == null || localStorage.getItem('accesstoken') == '') {
                        alert('Not getting Access Token, Please try again');
                    }
                    else {
                        if (localStorage.username && localStorage.password) {
                            localStorage.login_token = 'true';
                        }
                        if (func !== undefined) {
                            func();
                        }
                    }
  • Вопрос задан
  • 4690 просмотров
Пригласить эксперта
Ответы на вопрос 1
Fesor
@Fesor
Full-stack developer (Symfony, Angular)
1) CORS настраивается на сервере
2) для Phonegap/Cordova CORS не нужен, это фишка браузера а не webview.
3) для разработки можете поднять прокси-сервер (есть готовые, достаточно поискать в npm) который будет добавлять вам CORS заголовки.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы