0
我試圖用Python中的POST
方法查詢服務器。在Python中HTTP POST&302重定向
import requests
url = "https://www.test.com/service"
data = {"param": "value"}
req = requests.post(url, data).content
當我看着req
,它顯然沒有考慮到我發佈的數據。
如果我請與捲曲頭:
curl -ik -X POST -d "param=value" https://www.test.com/service
我得到以下HTTP 302
:
HTTP/1.1 302 Déplacé Temporairement
Date: Fri, 06 Oct 2017 16:42:36 GMT
Server: Apache-Coyote/1.1
X-Content-Type-Options: nosniff
X-XSS-Protection: 1; mode=block
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
Location: https://www.test.com/redirect
Content-Language: fr-FR
Content-Length: 0
Via: 1.1 www.test.com
所以,如果我的理解很好,我重定向到Location
這是https://www.test.com/redirect
。該地址只能用GET
方法查詢;如果我嘗試使用POST
,則會出現HTTP 500
錯誤。
我的理解是,我POST
帶參數的請求,我被重定向到另一個頁面,請求變成GET
,查詢Location
。我不明白我的參數會發生什麼:在我的瀏覽器中,我得到一個答案,考慮到發送的參數,當我用手查詢它們時,它們似乎「丟失」了,因爲我只是得到一個空的版本https://www.test.com/redirect
。
我錯過了什麼?我對請求的理解很淺,所以我確信我錯過了一些明顯的東西。
我編輯了我的問題,這是一個不幸的錯字。我沒有使用正確的語法,我確實有這個問題。如果我犯了這個錯誤,從[我的經驗](https://stackoverflow.com/questions/46422307/post-method-in-python-errno-104),它應該會觸發'104錯誤'! – MBR