web-dev-qa-db-ja.com

Angular appのwindow.location.hrefにhttpヘッダーを追加する

外部のangular htmlページにリダイレクトする必要があるangularアプリがあるので、$window.location.hrefを使用してangularアプリを外部にリダイレクトできると思った地点。これは実際にはうまく機能しますが、コンテンツ(静的コンテンツを含む)を提供する前に認証トークンをチェックするnodejs/expressバックエンドがあります。

これには、httpリクエストのヘッダーで送信される認証トークンが必要です。ここで質問:

$window.location.hrefを送信する前に変更することにより、リクエストに認証トークンを追加できますか/どのように追加しますか?

24
britztopher

$window.location.hrefを使用すると、ブラウザはJavaScriptコードではなくHTTPリクエストを作成します。したがって、トークン値にAuthorizationなどのカスタムヘッダーを追加することはできません。

JavaScriptを介してCookieを追加し、そこに認証トークンを配置できます。クッキーはブラウザから自動的に送信されます。ただし、Cookieとヘッダーを使用した場合のセキュリティへの影響を確認する必要があります。 JavaScriptを介して両方にアクセスできるため、追加の攻撃経路はありません。新しいページが読み込まれた後にCookieを削除しない限り、CSRFエクスプロイトが利用できる可能性があります。

28
Kevin Hakanson

JWTをLaravel PHPバックエンドの認証として使用しており、URLに_?token=..._を入れることで機能します。たとえば、AngularJSとsatellizerプラグインを使用する場合、?token=' + $auth.getToken()をURLに追加します。

SSLを使用して、API呼び出しに厳密に使用します。 これはユースケースでの安全な認証方法ではないかもしれないことに注意してください。

2
Innovaat