2

AJAX を介して RoR Web アプリケーションとやり取りする必要がある小さなウィジェット (JavaScript を使用) を作成しています。ユーザーのワークフローは次のようになります。

  1. RoR Web アプリにログインする
  2. ブラウザ拡張機能またはブックマークレット (どちらも同じコードベースを共有しています) のいずれかを取得します
  3. ウェブサイトにアクセスしてウィジェットを有効にする
  4. そのウェブサイトで保存したいものをポイントし、[OK] を押します
  5. キャプチャされたコンテンツを含む Web アプリの URL が返されます

ウィジェット コードのワークフローは次のようになります。

  1. DOM から情報を収集し、関連する jQuery JSONP リクエストを発行する
  2. 応答に「未承認」というカスタム ステータス メッセージがある<iframe />場合は、Web アプリから発信された認証ページを開きます。応答で認証が成功した場合はSet-Cookie、後続の AJAX 要求に必要な認証 Cookie を設定するヘッダーがあります。
  3. 認証が必要な場合は、JSONP リクエストを再試行してください

これは、ブックマークレットに対してのみ機能します。ただし、Firefox 拡張機能の場合、Web アプリは認証 Cookie が取り除かれたリクエストを受け取ります。実際、すべての Cookie を削除しました。リクエストはサンドボックス化されているようです。@mozilla.org/cookieServiceこれで、拡張機能が利用できることがわかりました。質問は次のとおりです。

  1. 拡張機能の main.js からコンテンツ スクリプトの JSONP リクエストに Cookie を渡すにはどうすればよいですか?
  2. URL localhost:3000 を使用して、開発環境の Cookie を取得するにはどうすればよいですか? はcookieService、その URL の Cookie として null を返します
  3. 認証が解決される方法を Cookie から別のものに変更することは可能ですか?
4

1 に答える 1