Я разрабатываю приложение 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). Приложение не устанавливает заголовок, и в результате запрос 401, потому что файл cookie авторизации не отправлен.
Мой вопрос заключается в следующем: есть ли способ подорвать это и переопределить заголовок Cookie (или другой способ сделать это полностью) на PhoneGap? Я знаю, что использование заголовка авторизации также является вариантом, но у меня ограниченный доступ к серверу (который его не поддерживает) и я надеялся на более быстрое решение.
Дополнительный вопрос: вызов AuthService также должен установить файл cookie httpOnly на устройстве, но не (я предполагаю, что это связано с междоменным запросом)... Правильно ли я в этом предположении, или может быть что-то не так? серверная часть?
Спасибо!