5

わかりました。最初の質問を間違えたようです。だから、ここにいくつかの修正があります。プロトコルがHTTPS(SSL)に変更されると、2番目のリダイレクトが停止するため、答えは引き続き適用されます。

私の場合、リダイレクトが複数回発生し、ブラウザは2番目のリダイレクトに従いません。最初のリダイレクトが実行されますが、エラーが返されます。

リダイレクトを含むJavaScriptAJAX応答が自動的に追跡されることを読み続けていますが、私の場合はそうではないようです。最初のリダイレクトの後にブラウザが自動的に続き、ヘッダーの2番目のリダイレクトに従わずに最初のリダイレクトが返されます。私の問題は、すべてのリダイレクトが自動的にブラウザによって追跡されるようにしたいということです。

リダイレクトはphpCASライブラリの一部です。結果を返す前に毎回ユーザー認証をチェックするPHPで書かれたAPIがあります。

これがシーケンスです。注意すべき主な点は、ブラウザが1つのリダイレクトを実行した後、2番目の応答を返すことです。にAJAX呼び出しを行ったときに、最後の応答を返したほうがいいと思いますlocalhost/example/api

localhost / example

  • localhost/example/apijQuery.ajax()を使用した呼び出し

応答1:localhost / example / api

  • https://localhost/accounts/cas/login?service=api.example.com&gateway=true(SSLを使用して)にリダイレクトします。

応答2:(SSL)localhost / accounts / cas / login?service = api.example.com&gateway = true

  • クエリキー「gateway」が存在する場合、ログインは、チケットの有無にかかわらず、「service」キーによって提供されるURLにリダイレクトされます(ユーザーがログインしているかどうかをサービスに通知します)。

応答3:localhost / api?ticket = TICKET

  • チケットを確認し、チケットなしで自分自身にリダイレクトします。

応答4:localhost / api

  • 今回、CASクライアントは$ _SESSIONを調べてチケットが何であったかを記憶し、JSONPを返すAPIリクエストを処理します。

OpenIDまたはOpenAuth(orization)を介してCASを使用している特別な理由はありません。CASは、WordPressで動作するようになった最初の認証モジュールにすぎませんでした。別の認証ライブラリ、CMS、フレームワークなどを使用することに関して、私は提案を受け入れています。しかし、私の望みは、このプロジェクトを完成させることです。したがって、再ツールが少ないほど良いです。

4

1 に答える 1

5

コメントに追加したときに後で気がついたように、ajax リクエストはsame origin policyの対象となります。

はい、JSONP を使用できます。ただし、幸運にも IE8 以降のみをサポートする必要がある場合は、CORSの方が優れたソリューションである可能性があります。

基本的に、次のようなヘッダーを追加します

access-control-allow-origin: http://api.example.com
access-control-allow-credentials: true

サーバーの回答に対して、クロスオリジンポリシーを回避できます。

また、このjQuery チケットを参照して、jQuery で動作するようにしてください。

于 2012-04-06T19:03:14.457 に答える