Day02 | 整齊的程式,讓看的人長命百歲,給我用 ESLint,我自己後來都用 prettier + eslint 這個組合,prettier 幫你自動管理 style,eslint 則去抓一些可以更好的寫法。
好處就是從此不用再糾結要用 tab 還是空白,要加分號還是不加分號,斷行要怎麼斷排版要怎麼版,都交給 prettier 決定就好,討論這些的時間就可以省下來做更重要的事。
DAY13-fetch和promise還有await抓抓資料裡面提到:
這邊要講的不是async await的await,而是svelte 的語法await,透過這語法可以幫忙解析promise物件
往下看發現 svelte 的 template 語法有支援 await,好潮
Day13 前端如何管理 API (中)- Cookie、CORS 、CSRF,想補充的有兩點,先問大家一個問題:
假設有個「非同源又沒有設定 CORS」的 API 是用 GET 去刪除文章,例如說 GET http://another-domain.com/delete_article?id=5 就可以把 id 是 5 的文章刪掉。今天如果我在 http://aaa.com 利用 ajax 去呼叫這個 API,可以成功刪除文章嗎?
.
.
.
.
.
.
防雷一下
.
.
.
.
.
.
最常見的錯誤答案就是:「不行,因為有同源政策,所以 API 會被擋下來」。
正解是:可以,但前端那邊不知道是否成功刪除。
因為同源政策擋的是 response 不是 request。不然你換個方式想就知道了,如果 request 沒有發出去,瀏覽器怎麼知道有沒有設定 CORS header?所以 request 一定會發出去,然後一定會拿到 response,只是瀏覽器把這個 response 擋住不讓你拿。
這也是為什麼要有 preflight request,因為 preflight 都是針對那些「會改動到資源」的方法(PUT/DELETE/PATCH...),才會需要先發 preflight 去驗證這是合法的,才幫你把真的 request 發出去。
第二個想補充的是 CSRF 有一個比較方便擋的方式 SameSite cookie,根據這篇文章,Chrome 在未來的版本會自動把 SameSite cookie 變成預設,你的網站就自動會有防止 CSRF 的功能。
最後,今天多發現了兩個系列可以關注:我搶到旗子了!30天CTF入門裡面提到的那個系統 picoCTF 好酷,以後可以推坑學生去玩;動態規劃百題之經典、理論與實作全部都是講 DP,好棒,應該會有一堆 DP 經典題,滿期待背包問題會怎麼講。
今天想說去市區晃晃,順便吃吃看倫敦海底撈,我大概三點半到那邊的,想說這時間應該沒什麼人吧。
結果我根本大錯特錯,人超級多,海底撈要排 50 幾組,根本就是瘋了...然後那一區也超級無敵多人,我一看到人潮立刻就後悔假日進市區了...我決定明天一整天除了去超市買午餐加晚餐,我不要進市區,我待在房間裡面乖乖魯就好,以此避開人潮。
附上一張證明今天有出門的照片: