新聞中心
前言
創(chuàng)新互聯(lián)專注于撫順企業(yè)網(wǎng)站建設(shè),成都響應(yīng)式網(wǎng)站建設(shè)公司,商城系統(tǒng)網(wǎng)站開(kāi)發(fā)。撫順網(wǎng)站建設(shè)公司,為撫順等地區(qū)提供建站服務(wù)。全流程專業(yè)公司,專業(yè)設(shè)計(jì),全程項(xiàng)目跟蹤,創(chuàng)新互聯(lián)專業(yè)和態(tài)度為您提供的服務(wù)
同源策略:判斷是否是同源的,主要看這三點(diǎn),協(xié)議,ip,端口。
同源策略就是瀏覽器出于網(wǎng)站安全性的考慮,限制不同源之間的資源相互訪問(wèn)的一種政策。
比如在域名https://www.baidu.com下,腳本不能夠訪問(wèn)https://www.sina.com源下的資源,否則將會(huì)被瀏覽器攔截。
注意兩點(diǎn):
1.必須是腳本請(qǐng)求,比如AJAX請(qǐng)求。
但是如下情況不會(huì)產(chǎn)生跨域攔截
WEB1添加允許跨域請(qǐng)求,通過(guò)實(shí)現(xiàn)WebMvcConfigurer
@Configuration public class WebMvcConfig implements WebMvcConfigurer { @Override public void addCorsMappings(CorsRegistry registry) { registry.addMapping("/hello"); } }
再次訪問(wèn)將會(huì)返回正常數(shù)據(jù)。
除了以上的配置外,還可以做更細(xì)致的限制
比如對(duì)請(qǐng)求的headers,請(qǐng)求的方法POST/GET...。請(qǐng)求的源進(jìn)行限制。
同時(shí)還可以使用注解 @CrossOrigin來(lái)替換上面的配置。
@Slf4j @RestController public class Web1Controller { @CrossOrigin @RequestMapping("/hello") public String hello(){ log.info("hello "); return "hello," + new Date().toString(); } }
注解可以用在類上,也可以用在方法上,但必須是控制器類
配置和上面一樣,也是可以對(duì)方法,header,源進(jìn)行個(gè)性化限制。
@Target({ElementType.METHOD, ElementType.TYPE}) @Retention(RetentionPolicy.RUNTIME) @Documented public @interface CrossOrigin { /** @deprecated */ @Deprecated String[] DEFAULT_ORIGINS = new String[]{"*"}; /** @deprecated */ @Deprecated String[] DEFAULT_ALLOWED_HEADERS = new String[]{"*"}; /** @deprecated */ @Deprecated boolean DEFAULT_ALLOW_CREDENTIALS = false; /** @deprecated */ @Deprecated long DEFAULT_MAX_AGE = 1800L; @AliasFor("origins") String[] value() default {}; @AliasFor("value") String[] origins() default {}; String[] allowedHeaders() default {}; String[] exposedHeaders() default {}; RequestMethod[] methods() default {}; String allowCredentials() default ""; long maxAge() default -1L; }
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持創(chuàng)新互聯(lián)。
本文標(biāo)題:SpringBoot解決跨域請(qǐng)求攔截問(wèn)題代碼實(shí)例
網(wǎng)址分享:http://www.ef60e0e.cn/article/pjjici.html