1.6 CORS
瀏覽器因為安全性的考量,有一個東西叫做同源政策,Same-origin policy。
意思就是說如果你現在這個網站的跟你要呼叫的 API 的網站「不同源」的時候,瀏覽器一樣會幫你發 Request,但是會把 Response 擋下來,不讓你的 JavaScript 拿到並且傳回錯誤。
什麼是不同源呢?其實你想簡單一點,只要是 Domain 不一樣就是不同源,或者是一個用http
一個用https
也是不同源,端口號不一樣也是不同源。
所以如果你是接別人 API 的話,大多數情形都是不同源的。
再次強調一點,「你的 Request 還是有發出去的」,而且瀏覽器也「確實有收到 Response」,重點是「瀏覽器因為同源政策,不把結果傳回給你的 JavaScript」。如果沒有瀏覽器的話其實就沒有這些問題,你愛發給誰就發給誰,不管怎樣都拿得到 Response。
CORS,全名為 Cross-Origin Resource Sharing,跨來源資源共享。
這套規範跟你說,如果你想開啟跨來源 HTTP 請求的話,Server 必須在 Response 的 Header 裡面加上Access-Control-Allow-Origin
。
重點是這一行:Access-Control-Allow-Origin: *
,星號就代表萬用字元,意思是任何一個 Origin 都接受。所以當瀏覽器接收到這個 Response 之後,比對目前的 Origin 符合*
這個規則,檢驗通過,允許我們接受跨來源請求的回應。
node.js 請求代理 客戶端發起請求到nodejs server,nodejs收到後請求第三方server取得數據,返回客戶端。
Last updated