本篇教學以Laravel作為伺服器端的框架,目的在使用Postman通過XSRF的驗證,以測試POST的請求。以Laravel為例,Laravel會於回應瀏覽器的GET請求時將XSRF-TOKEN寫在cookie中,因此本篇將示範如何從cookie中取得XSRF-TOKEN並附在POST的header傳遞出去。
1. 安裝chrome的擴充功能
postman透過chrome作為Interceptor來記錄cookie,因此要先安裝postman於chrome上的擴充程式。
網址:https://chrome.google.com/webstore/detail/postman-interceptor/aicmkgpgakddgnaphhhpliifpcfhicfo
2. 新增environment
- 回到postman,點畫面右上角,以設定環境
2. 新建evnironment
3. 輸入新建的environment辨識名稱,並按下"Add"
4. 選擇剛剛新建的environment
3. 發送GET請求,以取得XSRF token
- 新建一個GET請求,並於test標籤中加入以下程式碼。test標籤中的程式碼,會在伺服器成功回傳之後執行,因此我們利用這功能來取得cookie,並存入postmant的環境變數,以讓POST的時候可以使用。
pm.environment.set(
"XSRF-TOKEN", //此為環境變數名稱
decodeURIComponent(pm.cookies.get("XSRF-TOKEN"))
)
2. 按下send後,檢查XSRF token是否存在環境變數中了
4. POST附帶XSRF token
Laravel預設要求post時需於HTTP header附帶XSRF token
以下為我在Laravel中寫於 routes/web.php
中的php程式碼
Route::post('/api', function (Request $request) {
return "Hello World!";
});
- 新增POST標籤,並於header中加入XSRF token。
{{"環境變數"}}:用來取得對應的環境變數值。
X-XSRF-TOKEN:{{XSRF-TOKEN}}
2. 按下send,成功接收到回傳囉
參考資料
- How do I send spring csrf token from Postman rest client? — Stack Overflow
https://stackoverflow.com/questions/27182701/how-do-i-send-spring-csrf-token-from-postman-rest-client - CSRF Protection — Laravel — The PHP Framework For Web Artisans
https://laravel.com/docs/5.6/csrf