我正在開發與安全.net服務器通信的PhoneGap應用程序。問題是,我似乎無法通過任何請求傳遞任何Cookie(W3C)。PhoneGap中的Cookie標題:拒絕設置不安全標題「Cookie」
這就是我正在做的事情(假設「用戶名」和「密碼」工作)。
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;
});
鉻只是說:拒絕設定不安全頭「曲奇」(它遵循W3C規範)。該應用程序不會設置標題,因此不會發送請求401,因爲授權cookie不會發送。
我的問題是這樣的:有沒有什麼辦法來顛覆這個,並在PhoneGap上覆蓋Cookie標頭(或另一種方式去完全)?我知道使用授權標題也是一個選項,但我對服務器的訪問受限(不支持它),並希望得到更直接的解決方案。
紅利問題:對AuthService的調用也應該在設備上設置一個httpOnly cookie,但不會(我推測這是因爲它是跨域請求)......我在這個假設中是正確的,還是可以服務器端有問題嗎?
謝謝!
感謝您的回覆。我最終選擇了Authorization標頭,這對我的需求來說工作得很好! – evancohen
謝謝,我正在用'Secure'和'httponly'屬性響應頭文件'Set-Cookie',然後在後續請求中發送正確的'Cookie'。我在兩者之間使用了'nginx'代理,它允許我設置需要Angular'$ http'的適當的'Access-Control'頭文件。 – sampoh