2017-04-10 1 views
2

Github APIとの統合を処理するためにOkHttpライブラリを使用するJenkinsプラグインを使用しています。If-Modified-Sinceヘッダーを設定するときに、Last-Modifiedヘッダーを扱うのと同じように、OkHttpがDateヘッダーを同じに扱うのはなぜですか?

のGithubの/レポ/:所有者/:OkHttpがリソースにアクセスすることを許可されていないトークンを使用して、リソースを要求しようとしたときにレポエンドポイントは、エラー404を返します。トークンのスコープが拡張されてリソースにアクセスできるようにすると、OkHttpはIf-Modified-Sinceヘッダーで要求を行います。ヘッダーの値は、404の応答からのDateヘッダーの値に設定されます。 Githubのサポートチームによると、最初のリクエストがあったときからリソース(/ repos /:owner /:repoエンドポイントの後ろのデータ)が変更されていないので、この動作は適切な動作です。製。ただし、これは、OkHttpクライアントがキャッシュされた404応答を使用するようになったことを意味します。

これは、Dateヘッダは、リソースが最後に変更された際にチェックしていない、新鮮さを計算するために意図されていたように思えます。 RFC 7232 section 3.3は、クライアントがDateヘッダーの値をIf-Modified-Sinceの値として使用することがあると言いますが、この動作が受け入れられることを示唆するWeb上の他の文献を参照していません。私はMozilla's documentation on the If-Modified-Since headerに日付ヘッダーの参照が表示されません。

がポステルの法則はOkHttpは、If-Modifiedの-Sinceヘッダのための別のソースとしてそれを使用して日付ヘッダを誤用しないようにしてください必要があることを示唆していますか?

答えて

1

RFCは、どのような動作が適切であるかが決定的です。 RFCにDateヘッダーをIf-Modified-Sinceで使用できると記載されている場合は、それが可能です。

は範囲が拡大されたときにキャッシュを無効にするためのGitHubを説得考えてみましょう。 2017-03-01で応答が提供され、トークンのスコープが2017-04-01で拡張された場合、リソースは2017-04-01で効果的に変更されました。

もう1つの方法は、OkHttpのキャッシュを無効にすることです。すべてのキャッシュと同様に、バグのキャッシュ設定の指示を守った結果、Postelの法則に違反します。

関連する問題