2017-12-14 6 views
0

値ヘッダーまたは値なしヘッダーの両方が着信接続を許可するかどうかを確認しようとしています。だから私はそれのためのスクリプトを書いた。値の有無にかかわらずNGINX受信ヘッダーを検証する必要がある

しかし、両方のヘッダーが空の値の場合は機能しません。

それは、

location/{ 
    set $test "00"; 
    if ($http_x_token){ 
     set $test "1"; 
    } 
    if ($http_api_version){ 
     set $test "${test}1"; 
    } 
    if ($test = "00"){ 
     return 415; 
     break; 
    } 
    proxy_pass http://127.0.0.1:1234; 
} 

エラーコードで私は、このスクリプトで行方不明です何でも対応していますか?

答えて

0

空のヘッダーフィールド値はRFC7230で無効です。

https://tools.ietf.org/html/rfc7230#section-3.2

フィールド値はオプションではなく、指定しなければなりません。

したがって、nginxは欠落したヘッダーと空のヘッダーを区別しません。

PS:ブレークディレクティブは、以下のコードでは意味がありません。

if ($test = "00"){ 
    return 415; 
    break; 
} 

https://nginx.ru/en/docs/http/ngx_http_rewrite_module.html#return

returnは処理を停止し、クライアントに指定されたコードを返します。

関連する問題