使用REST-Client一陣子之後,最近常常遇到打本地伺服器API會發生身分驗證失敗的情況,但是打遠端伺服器卻正常的情形。明明Cookie也換過了,但是本機上還是會打不過。
往往最後還是要打開Postman的窘境。還一度考慮是否要更換測試工具。但是REST-Client真是太好用了,是我開發API的過程中,就能幫我快速檢驗API是否正確的小工具。
我跟前輩一直想找出問題的原因,最近終於發現問題所在了。
使用REST-Client的產生cURL的功能看到的Cookie值,的確是使用我設定的Cookie。
但用後端程式的偵錯模式一看,收到的Cookie卻不是我在Rest-Client設定的Cookeie。
我找跟Cookie有關的issue:New cookie is not set and provide ability to clear cookies #117才發現問題所在!!!
在測試API的過程中,後端可能會回傳Set-Cookie回來,Rest-Client會自動儲存起來,並在下次打API的時候使用這把新Cookie。
所以在測API的時候明明有設定的Cookie A,但在後端收到的卻是Cooke B,因為Rest-Client實際傳送的是Set-Cookie的Cookie B。
所以要解決這個問題就非常簡單了!
首先去VS Code的設定中,搜尋Cookie相關的功能,找到Remember Cookies For Subsequent Requests
選項,並取消勾選
第二步驟是前往電腦的家目錄尋找把~/.rest-client/cookie.json
儲存Cookie的檔案刪掉,就大功告成了。
(在我的Windows上檔案路徑會是C:\Users\長庚\.rest-client\cookie.json
)
有自動儲存的Cookie都是放在cookie.json裡,內容格式如下
{
"www.mywebsite.com": {
"/": {
".AspNet.Cookies": {
"key": ".AspNet.Cookies",
"value": "qfewghy5krtegrsdnmgj;7p9o86i7rj34hjyrkuil6treu5ywaegdfbgnfhmuttytsrgfagsfwrsghsj3111",
"domain": "www.mywebsite.com",
"path": "/",
"secure": true,
"httpOnly": true,
"hostOnly": true,
"creation": "2021-05-29T17:28:38.405Z",
"lastAccessed": "2021-05-29T17:28:38.405Z"
}
}
}
}