Я разрабатываю приложение PhoneGap, которое взаимодействует с безопасным .net-сервером. Проблема в том, что я не могу передать какие-либо файлы cookie с любым запросом (W3C).
Это то, что я делаю (предположим, что работают "имя пользователя" и "пароль" ).
var token;
$.ajax({
url: "https://server.com/AuthService/api/account/login",
crossDomain: true,
type: 'post',
async: false,
data: {
username: "username",
password: "password"
}
}).done(function(response) {
token = response.securityToken;
success = true;
});
В этот момент у меня есть токен аутентификации, который я могу использовать для проверки всех последующих запросов. Поэтому, используя этот токен, я делаю еще один запрос на сервер...
$.ajax({
url: "https://server.com/Service/api/search?query=" + query,
headers: { Cookie: 'auth=' + token },
crossDomain: true,
withCredentials: true,
type: 'POST',
async: false,
data: ' ' //because we don't want our request to be 0 bytes (the server is picky)
}).done(function(data) {
result = data;
});
Chrome просто говорит: Отказался от установки небезопасного заголовка "Cookie" (который придерживается спецификации W3C). Приложение не устанавливает заголовок и, как результат, запрос 401s, поскольку cookie авторизации не отправляется.
Мой вопрос таков: есть ли способ подорвать это и переопределить заголовок Cookie (или еще один способ сделать это полностью) на PhoneGap? Я знаю, что использование заголовка авторизации также является опцией, но у меня ограниченный доступ к серверу (который его не поддерживает) и надеялся на более немедленное решение.
Бонусный вопрос: вызов AuthService также должен установить cookie httpOnly на устройстве, но не (я предполагаю, что это потому, что это запрос перекрестного домена). Правильно ли я в этом предположении или могу быть чем-то неправильным на стороне сервера?
Спасибо!