安全な .net サーバーと通信する PhoneGap アプリケーションを開発しています。問題は、リクエスト ( W3C )で 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;
});
Chrome は次のように言っています: 安全でないヘッダー「Cookie」の設定を拒否しました (これは W3C 仕様に準拠しています)。アプリはヘッダーを設定せず、その結果、承認 Cookie が送信されないため、リクエストは 401 になります。
私の質問はこれです: PhoneGap でこれを覆して Cookie ヘッダー (またはそれを完全に処理する別の方法) をオーバーライドする方法はありますか? Authorizationヘッダーを使用することもオプションであることは知っていますが、サーバーへのアクセスが制限されており(サポートされていません)、より迅速な解決策を望んでいました.
おまけの質問: AuthService への呼び出しは、デバイスに httpOnly Cookie も設定する必要がありますが、そうではありません (これはクロスドメイン要求であるためだと推測します)... この仮定で正しいでしょうか、それとも何か問題がある可能性がありますサーバ側?
ありがとう!