2017-06-24 17 views
0

リクエストヘッダーがカスタムであるかデフォルトであるかをPythonでチェックする方法はありますか?文字通り、これらの2つのカール要求を区別することは可能ですか?ヘッダーがカスタムであるかどうか確認してください

curl -si 127.0.0.1:8080/api/key1 -XPUT -d '{"text": "hello"}' 

curl -si 127.0.0.1:8080/api/key1 -XPUT -d '{"text": "hello"}' -H 'Content-Type: application/x-www-form-urlencoded' 
+0

はい、あなたはヘッダを分析することができます。 [要求](http://docs.python-requests.org/ja/master/)モジュールで再生します。 – idjaw

+0

しかし、request.headers.get( 'Content-Type')を使用すると、両方とも同じ文字列を返します – Auerros

+0

次にカスタムヘッダーを定義する必要があります。 Content-Typeはサポートされているヘッダーなので、両方のヘッダー要求があります。 content-typeの値は、すでに設定されているデフォルト値です。では、正確に何を把握したいのですか?習慣によってあなたが意味することのより具体的な例を挙げることができますか? – idjaw

答えて

0

いいえ、フラスコまたは言語/フレームワークでこれを行う方法はありません。要求はHTTPプロトコル上で送信される文字列であり、同じ文字列を持つ2つの要求は同等です。デフォルトでは、curlでのPUTリクエストのContent-Typeはapplication/x-www-form-urlencodedです。このコンテンツタイプを指定すると、特にHTTP経由で同じ文字列を送信する際にカールが発生します。

証明

curl -si https://httpbin.org/put -X PUT -d '{"text": "hello"}' > test1 

curl -si https://httpbin.org/put -X PUT -d '{"text": "hello"}' \ 
    -H 'Content-Type: application/x-www-form-urlencoded' > test2 

diff test1 test2 # Only the dates and processing times differ 
+0

2番目のリクエストで 'x = y'をヘッダーの値に設定すると、そのヘッダーのカスタム設定が他のリクエストに含まれていないことを認識することによって、両方のリクエストが異なっていると判断できる方法がないことがわかります要求?質問の元の例では、カスタムヘッダーを使用していません。 – idjaw

+0

あなたは、間違いなくこの例題が示したデフォルト値の上書きについて質問すると解釈しました。ヘッダーxをyに設定すると、明らかに別のリクエストが作成されますが、この記事で書いたことには同意しません。あなたの2つの要求は異なる文字列を持つでしょう。 – David

+0

これは、私がこの質問について混乱していることです。キーと値の両方がリクエストの*デフォルト設定です。 * custom *が質問に全く使われなかったときの* custom *の記述のために、私はちょっと理解できません。確かに、カスタムヘッダーデータが設定されていないという事実を明示的に基にした答えは正しいです。 – idjaw

関連する問題