22

私はApache 2.2.26を実行しています:

Server version: Apache/2.2.26 (Unix)
Server built:   Jan 17 2014 12:24:49
Cpanel::Easy::Apache v3.22.30 rev9999 +cloudlinux

mod_headers を使用して Set-Cookie ヘッダーを編集し、secure または httpOnly フラグを追加しようとしていますが、まったく機能しません (何もせず、HTTP 500 エラーは発生しません)。

ヘッダー コマンドのディレクティブである "modify" "append" を問題なく使用できますが、編集はできません。何故かはわからない...

私は多くの組み合わせを試しましたが、これは私の .htaccess にあるものです:

Header edit Set-Cookie "(.)([Hh][Tt][Tt][Pp][Oo][Nn][Ll][Yy])?(.)" "$1$2 ;HTTPOnly"
Header edit Set-Cookie "(.)([Ss][Ee][Cc][Uu][Rr][Ee])?(.)" "$1$2 ;Secure"

アプリケーション内でコードを編集する必要なく、すべての Set-Cookie 応答にフラグを自動的に追加するソリューションを受け入れます。Web サーバーに追加のアイテムをインストールするアクセス権はありませんが、Web サーバーには、ほとんどの Web ホストで見られる標準の非常に長い Apache モジュールのリストがあります。

4

5 に答える 5

54

Header editディレクティブはアプリケーションが応答を生成する前に実行されるため、アプリケーションが編集するヘッダーを生成している場合、そのヘッダーはディレクティブの実行時にはまだ存在せず、編集するものは何もありません。

代わりに (アプリケーションが応答を生成したHeader always editに実行される)を使用して、これを修正できます。

Header always edit Set-Cookie (.*) "$1; HTTPOnly"

ディレクティブを適用する前のヘッダーの例:

Set-Cookie: foo=bar; domain=.example.com; path=/

ディレクティブを適用した後の同じヘッダー:

Set-Cookie: foo=bar; domain=.example.com; path=/; HTTPOnly

あなたの質問のディレクティブが正確に何を意図しているのかわかりません。(上記の例と同じヘッダーを想定して)に変更したときに実際に生じる結果は、たとえばHeader always editSet-Cookie

Set-Cookie: f ;HTTPOnlyo=bar; domain=.example.com; path=/

正規表現と後方参照がどのように機能するかを理解していれば、そこで何が起こっているかは明らかですが、おそらくそれはあなたが望んでいるものではありません. Set-Cookieあなたが言うように、すべてのヘッダーにフラグを追加したい場合は、この回答の上部にあるディレクティブが機能するはずです。あなたのニーズがより複雑で、その検索/置換で何をしようとしているのか私が誤解している場合は、お知らせください。

編集:明らかでない場合:両方のフラグを追加するには、次のようにディレクティブを変更できます。

Header always edit Set-Cookie (.*) "$1; HTTPOnly; Secure"

... または 2 つのディレクティブを使用します。

Header always edit Set-Cookie (.*) "$1; HTTPOnly"
Header always edit Set-Cookie (.*) "$1; Secure"

私には最初のアプローチの方が賢明に思えますが、それは主に好みの問題です。

于 2014-06-16T14:52:34.820 に答える