這個問題的關鍵是理解其中csrfmiddlewaretoken是從哪裏來的。 我以爲它是從csrftoken以某種方式構建的。 我意識到它必須是服務器提供的隱藏變量。
所以問題就變成了如何從初始get調用中提取csrfmiddlewaretoken值來登錄。注意郵差現在使用加入jQuery的cheerio。
在get call中使用postman jetpack這是我用來提取隱藏輸入值的測試。
tests["responseCode.code === 200"] = responseCode.code === 200 ;
var csrftoken = postman.getResponseCookie("csrftoken").value ;
tests['csrftoken: ' + csrftoken ] = csrftoken.length > 0 ;
var html ;
html = cheerio(responseBody) ;
inputs = html.find('input') ;
csrfmiddlewaretoken = '' ;
postman.setEnvironmentVariable("csrfmiddlewaretoken", csrfmiddlewaretoken) ;
for(var index = 0 ; index < inputs.length ; index++) {
var input = inputs[index] ;
if (input.attribs.name === 'csrfmiddlewaretoken') {
csrfmiddlewaretoken = input.attribs.value ;
postman.setEnvironmentVariable("csrfmiddlewaretoken", csrfmiddlewaretoken) ;
}
}
tests['csrfmiddlewaretoken: ' + csrfmiddlewaretoken ] = csrfmiddlewaretoken.length > 0 ;
然後在通話後實際登錄。
我不得不根據網站安全策略添加Referer頭。
Content-Type:application/x-www-form-urlencoded
Referer:{{referer}}
表單值
csrfmiddlewaretoken:{{csrfmiddlewaretoken}}
username:{{username}}
password:{{password}}
next:{{next}}
,然後在發送後電話郵遞員腳本成功登錄
pm.test("Status code is 200", function() {
pm.response.to.have.status(200);
});
:-)
你要什麼,以實現與在Javascript中構建csrf標記? – Swapnil
唯一不同於我可以看到的是什麼有效並且失敗的是提供csrfmiddlewaretoken。在http調用中使用瀏覽器和charles csrfmiddlewaretoken。我正在尋找創建csrfmiddlewaretoken來發送postman post請求,並希望登錄到系統。 –
在提問的時候,我有了這個網站可能會產生它的想法......這是! –