奇妙なCORSの質問...
私のexample.comサーバーには、Originリクエストヘッダーが渡され、example.comサブドメインの値を持つすべてのPOSTおよびGETリクエストに対してAccess-Control-Allow-Originレスポンスヘッダーを返すコードがあります(スーパーマン.example.com、batman.example.comなど)。
ここで、Cookie を渡す AJAX 呼び出しを行う必要があるため、要求に Cookie が含まれている場合はAccess-Control-Allow-Credentials応答ヘッダーを返せるようにする必要があります。
Cookie リクエスト ヘッダーが表示された場合に Access-Control-Allow-Credentials レスポンス ヘッダーを返すチェックを追加することもできますが、簡単にするために、常にAccess-Control-Allow-Credentials を返すことの欠点があるかどうか疑問に思っています。サブドメインからのすべての GET/POST リクエストのレスポンス ヘッダー。Origin リクエスト ヘッダーが指定されています。
これが私のコードです(これはTcl iRule、FWIWです):
when HTTP_REQUEST priority 200 {
if { ( [HTTP::method] equals "OPTIONS" ) and
( [HTTP::host] ends_with "example.com"] ) and
( [HTTP::header exists "Access-Control-Request-Method"]) } {
HTTP::respond 200 "Access-Control-Allow-Origin" [HTTP::header "Origin"] \
"Access-Control-Allow-Methods" "POST, GET, OPTIONS" \
"Access-Control-Allow-Headers" [HTTP::header "Access-Control-Request-Headers"] \
"Access-Control-Max-Age" "86400"
} elseif { ( [HTTP::host] ends_with "example.com"] ) and
( [HTTP::header exists "Origin"]) } {
# CORS GET/POST requests - set cors_origin variable
set cors_origin [HTTP::header "Origin"]
}
}
when HTTP_RESPONSE {
# CORS GET/POST response - check cors_origin variable set in request
if { [info exists cors_origin] } {
HTTP::header insert "Access-Control-Allow-Origin" $cors_origin
HTTP::header insert "Access-Control-Allow-Credentials" "true"
}
}
Access-Control-Allow-Credentials 応答ヘッダーを返す場合、名前付き (非汎用) Access-Control-Allow-Origin ヘッダーを指定する必要があることは承知しています ( Vary ヘッダーの問題がある可能性があります) 。他に知っておくべきことはありますか?