HTTPヘッダーは、通常、CGIプログラムにenvironment variablesとして渡されます。しかし、必ずしもそうではありません。
一般的に、CGIプログラムでヘッダー値にアクセスする方法は、Webサーバーがヘッダーをどのように処理するかによって異なります。ヘッダーは変更されても、削除されてもよい。たとえば、nginxの設定で、カスタムのFastCGIパラメータを経由してrange
ヘッダの値を渡すことができます:
fastcgi_param RANGE $http_range;
これは、このような場合は、環境変数はRANGE
呼び出される可能性が高いですが、それは最終的に依存しますプロトコルドライバの実装上。ヘッダーは、サーバー構成のためにドロップされる可能性があります。
SetEnvIf Range (,.*?){5,} bad-range=1
RequestHeader unset Range env=bad-range
したがって、環境変数の名前を予測することは一般に不可能であり、そしてそれはで利用できるようになりさえするかどうか:たとえば、以下のApache 2の構成は、5つの以上の範囲がある場合RangeヘッダをドロップCGIプログラム
ただし、の文字がの場合は、環境変数を介して利用できるようになります。正確な名前は、env
コマンドの出力を調べることで確認できます。
Apache2のためのデフォルト設定で動作します以下:
#!/bin/bash -
printf '%s\n\n' 'Content-type: text/html'
printf '>>> %s <<< \n' "$HTTP_RANGE"
exit 0
サンプル出力
'http://apache-test.local/cgi-bin/test.sh?sdfdsf'
HTTP/1.1 200 OK
Date: Thu, 10 Nov 2016 08:17:23 GMT
Server: Apache
Connection: close
Transfer-Encoding: chunked
Content-Type: text/html
>>> bytes=1-8 <<<