Spring Boot如何通過CORS處理跨域問題
跨域的產生就是因為瀏覽器的同源策略。它是瀏覽器的核心安全功能,所謂的同源,就是指域名,協議,還有端口要相同。傳統的方案就是JSONP(前端處理方案),但是JSONP有很大的局限性,就是只支持GET請求,所以不能滿足我們的需求,而CORS(Cross-origin-resource sharing)跨域資源共享,就可以解決這個問題。他是一個瀏覽器規范,一個w3c標準,提供web服務從不同網域傳來的沙盒腳本的方法,避開了瀏覽器的同源策略。
CORS是后端的一種處理的方案,在Spring中可以配置解決跨域,在Spring Boot中它的配置變得很簡單,只需要在你controller方法上加一個注解@CrossOrigin(origins='你的請求地址')就好了。
跨域資源共享(CORS) 是一種機制,它使用額外的 HTTP 頭來告訴瀏覽器 讓運行在一個 origin (domain) 上的Web應用被準許訪問來自不同源服務器上的指定的資源。當一個資源從與該資源本身所在的服務器不同的域、協議或端口請求一個資源時,資源會發起一個跨域 HTTP 請求。
比如,站點 http://domain-a.com 的某 HTML 頁面通過 <img> 的 src 請求 http://domain-b.com/image.jpg。網絡上的許多頁面都會加載來自不同域的CSS樣式表,圖像和腳本等資源。
出于安全原因,瀏覽器限制從腳本內發起的跨源HTTP請求。 例如,XMLHttpRequest和Fetch API遵循同源策略。 這意味著使用這些API的Web應用程序只能從加載應用程序的同一個域請求HTTP資源,除非響應報文包含了正確CORS響應頭。
如果方法百十來個,那這種的就不適用,因此可以做一個全局配置,統一處理
@Configuration//ctrl+o找一下這個方法public class WebMVcConfig implements WebMvcConfigurer { @Override public void addCorsMappings(CorsRegistry registry) { registry.addMapping('**').allowedOrigins('http://localhost:8081') .allowedHeaders('*') .allowedMethods('*') .maxAge(30*1000); }}
后端代碼處理的話就是這樣,但是還有其他方法,例如nginx,例如node.js,都可以處理,但是這兩個第三方工具的用處很多,如果僅僅局限在處理跨域,那就有點大材小用。
以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持好吧啦網。
相關文章: