所謂的跨域請求就是指:目前發起請求的域與該請求指向的資源所在的域不一樣。這裡的域指的是這樣的一個概念:我們認為若協定 網域 埠號都相同,那就是同域。
後端解決跨域,主要藉助cors
可以使用註解:@CrossOrigin
該註解開啟之後,就可以解決跨域問題,它可以加在controller中,表面這個controller中的全部方法都經過跨域處理,也可以單獨加在某個方法上,表示只有這一個方法經過跨域處理
但是它的預設值為*,也就是預設全部放行,理論來說不太安全
如果專案裡面又多個controller或多個方法,使用註解就會顯得非常雞肋,如果一個一個加太麻煩了,這時候就可以使用全域註解了
原理:建立一個配置類,開啟跨域註冊,並使用@Configuration註解把這個類當作一個配置注入到項目中
我們可以自由配置請求方式,以及網域權限,請求時間,更細緻的去控制跨域範圍
package com.wyh.config; import org.springframework.context.annotation.Configuration; import org.springframework.web.servlet.config.annotation.CorsRegistry; import org.springframework.web.servlet.config.annotation.WebMvcConfigurer; /** * @Description: 解决全局跨域 * @Author: 魏一鹤 * @Date: 2022-11-30 22:44 **/ @Configuration public class CorsMapping implements WebMvcConfigurer { @Override /** * 重新跨域支持方法 * CorsRegistry 开启跨域注册 */ public void addCorsMappings(CorsRegistry registry) { //addMapping 添加可跨域的请求地址 registry.addMapping("/**") //设置跨域 域名权限 规定由某一个指定的域名+端口能访问跨域项目 .allowedOrigins("*") //是否开启cookie跨域 .allowCredentials(false) //规定能够跨域访问的方法类型 .allowedMethods("GET","POST","DELETE","PUT","OPTIONS") //添加验证头信息 token //.allowedHeaders() //预检请求存活时间 在此期间不再次发送预检请求 .maxAge(3600); } }
注意:千萬不要忘了@Configuration註解,不然配置是無效的! ! !
以上是SpringBoot如何實現全域和局部跨域的詳細內容。更多資訊請關注PHP中文網其他相關文章!