之前我們已經了解到跨域的實作方式jsonp,今天來講講另外一種:CORS.
什麼是CORS
CORS:全稱為 Cross-origin resource sharing,即跨域資源共享,它允許浏覽器向跨域伺服器發送 Ajax 請求,克服了 Ajax 隻能同源使用的限制。
實作原理

當用戶端發送請求時,若浏覽器端發現該請求為跨域的,則會自動在請求頭中添加origin字段,origin值是發送請求的頁面位址,伺服器端來通過其來決定是否同意這次請求,無論同意與否,伺服器都會傳回一個http響應,那麼浏覽器如何判斷伺服器端是否同意呢?伺服器端如果同意這次請求,則會在響應頭中添加Access-Control-Access-Origin字段,于是,我們隻要在伺服器端設定該響應頭就可以實作跨域資源共享。
這種方法不需要去修改相應的ajax代碼,隻需要在伺服器端設定一些屬性即可以實作:
1.在請求頭中設定允許哪些用戶端通路:
這裡以express架構做個執行個體,代碼如下:
2.設定允許用戶端使用哪些方法
這樣就完成了,是不是很簡單。
與jsonp對比
CORS和JSONP都是為了使web浏覽器能夠跨源請求,使用目的相同,但是比JSONP更強大。JSONP隻支援GET請求,而CORS支援所有類型的HTTP請求,不過JSONP的優勢在于支援老式浏覽器以及可以向不支援CORS的網站跨源請求。