)次のPythonコードがあります。私はいくつかのデータをSAPシステムに送信しようとしています。私はセッションを開いた。セッションからcsrf-tokenの値を取得するにはどうすればよいですか? client.cookies['csrftoken']
を使用して検索しようとしましたが、CSRFトークンが存在しないか、正しいキー名を使用してCSRFトークン値を取得できないため、エラーが発生する可能性があります。CSRFトークンフロースルーリクエスト(SAPクライアント
私は単純なget要求でセッションを開かずに試してみましたが、CSRFトークン値を取得できましたが、トークンが保持されていないと考えてセッションを維持する必要があることがわかりましたトークン値。
印刷print client.cookies
は<RequestsCookieJar[<Cookie sap-usercontext=sap-client=100 for 34.239.8.24/>]>
となり、印刷はprint.client.headers
となり、{'Connection': 'keep-alive', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'User-Agent': 'python-requests/2.9.1'}
となります。ここからCSRFトークンを見つけるにはどうすればよいですか?
URL = "https://34.239.8.24:44300/sap/opu/odata/sap/ZRECEASY_PO_GL_POST_SRV/ZRECEASY_PO_GL_POSTSet"
auth_get_po_data ='S4H_FIN','Welcome1'
data = { "BUKR": 1710,"EBELN": 4500000004, "EBELP": 10,"EINDT": "20161103","OPEN_AMT": "3,000.00","PERC_REC_AMT": 0,"REC_AMT": 0, "ITEM_AMT": "3,000.00","INV_AMT": 0,"WAERS": "USD", "UPD_BY": "","UPD_DAT": "", "INV_APP": "", "SAKTO": "null", "KOSTL": "null", "AUFNR": "", "DESC": "", "KUNNR_NAM": "", "KUNNR": "", "COMMENT": "" }
client = requests.session()
client.get(URL, verify=False)
print client.cookies
csrftoken = client.cookies['csrftoken']
print csrftoken
login_data = dict(username="S4H_FIN", password="Welcome1", csrftoken=csrftoken, next='/')
r = client.post(URL, data=data, auth=auth_get_po_data, verify=False, headers=dict(Referer=URL))
print (r.text)