用Postman 6.0.7傳遞X-XSRF-TOKEN

陳孜穎
4 min readMar 6, 2018

--

本篇教學以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

  1. 回到postman,點畫面右上角,以設定環境

2. 新建evnironment

3. 輸入新建的environment辨識名稱,並按下"Add"

4. 選擇剛剛新建的environment

3. 發送GET請求,以取得XSRF token

  1. 新建一個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!";
});
  1. 新增POST標籤,並於header中加入XSRF token。

{{"環境變數"}}:用來取得對應的環境變數值。

X-XSRF-TOKEN:{{XSRF-TOKEN}}

2. 按下send,成功接收到回傳囉

參考資料

  1. 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
  2. CSRF Protection — Laravel — The PHP Framework For Web Artisans
    https://laravel.com/docs/5.6/csrf

--

--

陳孜穎

我是位軟體工程師。長期關注勞交通和性別平等等議題。期望社會中的不平等可以越來越少,達到「人生而平等」這崇高的終極目標。