微服務解決跨域
什么是跨域問題?
跨域,指的是瀏覽器不能執行其他網站的腳本。它是由瀏覽器的同源策略造成的,是瀏覽器對 JavaScript 施加的安全限制。
什么是同源?
所謂同源是指,域名,協議,端口均相同
http://www.myweb.com --> http://admin.myweb.com 跨域
http://www.myweb.com --> http://www.myweb.com 非跨域
http://www.myweb.com --> http://www.myweb.com:8080 跨域
http://www.myweb.com --> https://www.myweb.com 跨域
使用 CORS(跨資源共享)解決跨域問題
CORS 是一個 W3C 標准,全稱是"跨域資源共享"(Cross-origin resource sharing)。它允許瀏覽器向跨源服務器,發出 XMLHttpRequest 請求,從而克服了 AJAX 只能同源使用的限制。
CORS 需要瀏覽器和服務器同時支持。目前,所有瀏覽器都支持該功能,IE 瀏覽器不能低於 IE10
整個 CORS 通信過程,都是瀏覽器自動完成,不需要用戶參與。對於開發者來說,CORS 通信與同源的 AJAX 通信沒有差別,代碼完全一樣。瀏覽器一旦發現 AJAX 請求跨源,就會自動添加一些附加的頭信息,有時還會多出一次附加的請求,但用戶不會有感覺
因此,實現 CORS 通信的關鍵是服務器。只要服務器實現了 CORS 接口,就可以跨源通信
CORS 與 JSONP 的比較
CORS 與 JSONP 的使用目的相同,但是比 JSONP 更強大。
JSONP 只支持 GET 請求,CORS 支持所有類型的 HTTP 請求。JSONP 的優勢在於支持老式瀏覽器,以及可以向不支持 CORS 的網站請求數據。