ようへいの日々精進XP

よかろうもん

2021 年 08 月 26 日 (木)

アクティビティ (今までの走行 (歩行) 距離)

https://pixe.la/v1/users/inokappa/graphs/fitbit-activity

Fitibit Charge2 のアクティビティから走行 (歩行) 距離を Fitbit Web API で取得して Pixela で草生やしている。色が濃くなれば濃くなる程強度が高い (歩行、走行距離が長い) ということで。実装の詳細はこちら

ジョギング

補強やランは無し。ふと、シュークローゼットに置いてあった薄底シューズを履いて、家の周りを少しだけ走ってみた。不思議なことに、なかなか取れない嫌な痛みを感じることがなく走ることが出来た (ほんとに駆け足レベルだったけど

レアジョブ

今朝は 8 時半からだった。明日は 8 時からの予定。

夕飯

POST を維持したまま HTTP リダイレクトをかけたい

ギョームで、POST を維持したままリダイレクトをかけたいニーズが発生したので調査した。

developer.mozilla.org

ステータスコード 307 か 308 を返せば良いことが解った。

Nginx でやろうとすると、一番簡単な設定は以下の通り。

server {
  location / {
    return 307 https://example.com/foo$args;
  }
}

HTTP リダイレクトのレスポンスに Authorization ヘッダが含まれない件

上記の件と関連しているんだけど、POST のリクエストをリダイレクトさせる際、Authorization ヘッダを付けていたはずなんだけど、リダイレクト先には、Authorization ヘッダが飛んでいなかったので悩んでググってみたら、以下のような情報を見つけた。

stackoverflow.com

Basically, the redirect response does not have any "Authorization" headers, the "Authorization" header is only part of the request. So this is normal behavior for any HTTP client to resend all the headers to redirect location which they have sent to the original URL. There is nothing that you can do here. But most of the HTTP clients will resend the "Authorization" header only if the redirect location is on the same domain/origin. In your case, you can try to create a separate domain for S3 URL and redirect to it and hope that clients HTTP client will drop "Authorization" header when it will detect that the domain is changed (that's a security issue to resend an "Authorization" header when following redirect to a new domain/origin).

ざっくりまとめると...

  • リダイレクトのレスポンスには、基本的に Authorization ヘッダ は含まれない
  • これは、セキュリティ的に問題がある為、そのような挙動になっている (なるほど
  • ただし、転送元と転送先が同じドメインやオリジンであれば、クライアントレベル転送処理が施される

うーむ。この情報って、どこかにちゃんと仕様として纏まっているんだろうか?

とりあえず、勉強になりました。