背景
PythonのRequestsモジュールを使用し、自己証明書を使用し、SSL化した
WEBサーバ(ローカル環境)にgetとpost送信しようとしていますが、GETは送信できましたが、
POST送信すると"403エラー"が返却されます。
POST送信する際は、どのように記述すれば良いかわからず、質問させて頂きました。
環境
・Dockerコンテナ上にDjango(アプリケーションサーバ)、NGINX(ウェブサーバ)
があり、今回はDjangoから、NGINXへ、requestsを使用し通信を行おうとしています。
・NGINXの設定、SSLの設定は済んでおり、URLバーにhttps://localhost、と
入力すると、NGINX経由で、Djangoのページが出力されています。
(ブラウザにCA証明書インストール済み)
試したこと
・証明書の記述を無効にするため、verify=false、の記述も1度行いましたが、
GETの場合はエラーは出ずに値の取得はできましたが、こちらもPOSTの場合は、
403エラーになりました。
・以下のGET、POST送信を、”HTTPS”、ではなく、例えば、”https://nginx:8000〜”に対して行うと、
正常に動くことからも、認証関係で何かしらエラーが起きているようです。
GET送信時
Python
1//CA証明書のパス 2verify_path = '/usr/local/share/ca-certificates/extra/localCA.crt' 3 4res = requests.get('https://nginx/api/article', verify=verify_path)
POST送信時
Python
1//CA証明書のパス 2verify_path = '/usr/local/share/ca-certificates/extra/localCA.crt' 3 4sess = requests.session() 5url = 'https://nginx/accounts/login/' 6sess.get(url, verify=verify_path) 7csrftoken = sess.cookies['csrftoken'] 8 9post_url = 'https://nginx/api/article/1' 10 headers = { 11 'Content-type': 'application/json', 12 "X-CSRFToken": csrftoken 13 } 14 15res = sess.post( 16 post_url, 17 json={'status': 'ok'}, 18 headers=headers, 19 verify=verify_path 20 ) 21 22
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。