前言
當你獲得了一個知識之後,要怎樣才能知道那是正確的還是錯誤的?在程式的領域中這其實是一個相對簡單的問題,只要去確認規範是怎麼寫的就可以了(如果有規範的話)。
舉例來說,JavaScript 的各種語言特性在 ECMAScript Specification 裡面都找得到,為什麼 [] === []
會是 false,為什麼 'b' + 'a' + + 'a' + 'a'
會是 baNaNa,這些在規範裡面都有,都會詳細說明是用怎樣的規則在做轉換。
而 Web 相關的領域除了 JS 以外,HTML 或是其他相關的規範幾乎都可以在 w3.org 或是 whatwg.org 裡面找到,資源相當豐富。
雖然說瀏覽器的實作有可能跟規範寫的不一樣(像是這篇),但 spec 已經是最完整而且最有權威性的一個地方了,因此來這邊找準沒錯。
如果搜尋 CORS 的 spec,可能會找到 RFC6454 - The Web Origin Concept 以及 W3C 的 Cross-Origin Resource Sharing,但這兩份都叫這一份叫做 Fetch 的文件給取代了。
當初我疑惑了一陣子想說是不是自己看錯,fetch 跟 CORS 有什麼關係?後來才知道原來這邊的 fetch 跟 Web API 那個 fetch 其實不同,這份規格是定義了所有跟「抓取資料(fetch)」有關的東西,就如同它的大綱所寫的:
The Fetch standard defines requests, responses, and the process that binds them: fetching.
這一篇就讓我們一起來看一下 CORS 相關的規範,證明我前面幾篇沒有在唬爛你,講得都是有所根據的。因為規格還滿長的,所以底下就是我挑幾個我認為的重點講而已,想要理解所有的規格內容,還是需要自己去看才行。