跨域資源共享(CORS) 是一種機制,它使用額外的 HTTP 頭來告訴瀏覽器 讓運行在一個 origin (domain) 上的Web應用被准許訪問來自不一樣源服務器上的指定的資源。當一個資源從與該資源自己所在的服務器不一樣的域、協議或端口請求一個資源時,資源會發起一個跨域 HTTP 請求。跨域
好比,站點 http://domain-a.com 的某 HTML 頁面經過 的 src 請求 http://domain-b.com/image.jpg。網絡上的許多頁面都會加載來自不一樣域的CSS樣式表,圖像和腳本等資源。瀏覽器
出於安全緣由,瀏覽器限制從腳本內發起的跨源HTTP請求。 例如,XMLHttpRequest和Fetch API遵循同源策略。 這意味着使用這些API的Web應用程序只能從加載應用程序的同一個域請求HTTP資源,除非響應報文包含了正確CORS響應頭。安全
這段描述不許確,並不必定是瀏覽器限制了發起跨站請求,也多是跨站請求能夠正常發起,可是返回結果被瀏覽器攔截了服務器
跨域資源共享( CORS )機制容許 Web 應用服務器進行跨域訪問控制,從而使跨域數據傳輸得以安全進行。現代瀏覽器支持在 API 容器中(例如 XMLHttpRequest 或 Fetch )使用 CORS,以下降跨域 HTTP 請求所帶來的風險。網絡
什麼狀況下須要 CORS ?
跨域資源共享標準( cross-origin sharing standard )容許在下列場景中使用跨域 HTTP 請求:
前文提到的由 XMLHttpRequest 或 Fetch 發起的跨域 HTTP 請求。
Web 字體 (CSS 中經過 @font-face 使用跨域字體資源), 所以,網站就能夠發佈 TrueType 字體資源,並只容許已受權網站進行跨站調用。dom