セキュリティで保護された.netサーバーと通信するPhoneGapアプリケーションを開発しています。問題は、私はどんなリクエスト(W3C)でもクッキーを渡すことができないということです。PhoneGapのCookieヘッダー:安全でないヘッダー "Cookie"を設定することを拒否されました
これは私がやっていることです( "username"と "password"が動作すると仮定します)。
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;
});
この時点で、すべての後続のリクエストを検証するために使用できる認証トークンがあります。だから、Chromeは
...
$.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仕様に準拠)危険なヘッダー「クッキー」を設定することを拒否しました。アプリケーションは、承認クッキーが送信されないため、ヘッダーを設定し、結果としてリクエスト401sを設定しません。
私の質問はこれです:これを覆して、PhoneGapでCookieヘッダー(またはそれについて完全に行く別の方法)を上書きする方法はありますか? Authorizationヘッダーを使用することもオプションですが、サーバーへのアクセスが制限されており(サポートしていない)、より迅速な解決策が望まれます。
ボーナスの質問:AuthServiceを呼び出すと、デバイス上にhttpOnly Cookieが設定されている必要があります(ただし、これはドメイン間の要求であると推測しています)...私はこの前提で正しいですか何か間違ったサーバー側がありますか?
ありがとうございます!
返信いただきありがとうございます。私は、私のニーズに適したAuthorizationヘッダーを選ぶことになった! – evancohen
ありがとうございます、私はレスポンスヘッダ 'Set-Cookie'を' Secure'と 'httponly'属性で苦労していました。そして、フォローアップ要求に対して正しい' Cookie'を送り返しました。私はその間に 'nginx'プロキシを使用しています。これは、' $ http'が必要な適切な 'Access-Control'ヘッダを設定することを可能にしました。 – sampoh