AJAX を介して RoR Web アプリケーションとやり取りする必要がある小さなウィジェット (JavaScript を使用) を作成しています。ユーザーのワークフローは次のようになります。
- RoR Web アプリにログインする
- ブラウザ拡張機能またはブックマークレット (どちらも同じコードベースを共有しています) のいずれかを取得します
- ウェブサイトにアクセスしてウィジェットを有効にする
- そのウェブサイトで保存したいものをポイントし、[OK] を押します
- キャプチャされたコンテンツを含む Web アプリの URL が返されます
ウィジェット コードのワークフローは次のようになります。
- DOM から情報を収集し、関連する jQuery JSONP リクエストを発行する
- 応答に「未承認」というカスタム ステータス メッセージがある
<iframe />
場合は、Web アプリから発信された認証ページを開きます。応答で認証が成功した場合はSet-Cookie
、後続の AJAX 要求に必要な認証 Cookie を設定するヘッダーがあります。 - 認証が必要な場合は、JSONP リクエストを再試行してください
これは、ブックマークレットに対してのみ機能します。ただし、Firefox 拡張機能の場合、Web アプリは認証 Cookie が取り除かれたリクエストを受け取ります。実際、すべての Cookie を削除しました。リクエストはサンドボックス化されているようです。@mozilla.org/cookieService
これで、拡張機能が利用できることがわかりました。質問は次のとおりです。
- 拡張機能の main.js からコンテンツ スクリプトの JSONP リクエストに Cookie を渡すにはどうすればよいですか?
- URL localhost:3000 を使用して、開発環境の Cookie を取得するにはどうすればよいですか? は
cookieService
、その URL の Cookie として null を返します - 認証が解決される方法を Cookie から別のものに変更することは可能ですか?