私は基本認証を必要とするモバイルWebアプリケーションを持っています。私は別のドメインのサーバー上でAjaxを使って基本認証を呼び出すことができました。しかし、私は応答に問題があります。リクエストされたAjaxが別のドメインから返されたときにCookieを設定する
通常、セッションIDは、設定されたCookieヘッダーを通じてAjaxレスポンスによってブラウザに設定されます。私は、これが成功した認証で起こらなかったことに気づいた。
私がしたのは、応答が返されたときにヘッダーを読み取ってクッキーを手動で設定しようとしたことでした。私はこれをjQuerysのjqxhrオブジェクトで実現しました。私の驚いたことに、たとえサーバーがsessionIDが返されたと表示したとしても、jqxhrを介して応答にクッキーヘッダーが設定されていないことがわかりました。
これは相互ドメイン要求の予想される動作ですか?いくつかの応答ヘッダーがドロップされるでしょうか?これはブラウザのセキュリティ機能ですか?もしそうなら、あなたはこれを回避するために何を提案しますか?(例えば、身体のセッションIDを返します。これは私がShiroセキュリティフィルターを使っているためにしたくありません。それをハックする必要がありますか?)
助けてください
彼はおそらくjsonpを使用しています。 – ThatGuy
私はアプリケーションからのクロスドメインajax要求を許可するために、サーバー側でAllow-Originヘッダーを使用しています。アプリケーションは、電話のギャップがパッケージ化され、モバイルに展開されます。したがって、アプリケーションを提供するサーバーは存在しません。モバイル上で実行されるだけです。 PhoneGapはブラウザのラッパーで動作するようパッケージするので、クロスドメインはおそらく適用されます。 – rycfung
ヘッダーのAccess-Control-Allow-Originが「*」でない限り、これも機能します。 – vaugham