乐趣区

关于html5:SpringBoot前后端分离跨域解决方案

  1. 什么是跨域
    要理解跨域,先要晓得同源策略。同源策略是由 Netscape 公司提出的一个驰名的安全策略,所有反对 JavaScript 的浏览器都会应用这个策略。所谓同源是指:协定,域名,端口 全副雷同。

浏览器从一个域名的网页去申请另一个域名的资源时,协定,域名,端口任意不同,都会呈现跨域问题。

事实工作开发中常常会有跨域的状况。因为公司会有很多我的项目,也会有很多子域名,各个我的项目或者网站之间须要互相调用对方的资源,所以跨域申请是防止不了的

  1. 解决跨域的几种计划
    办法一:注解
    在 Spring Boot 中给咱们提供了一个注解 @CrossOrigin 来游戏实现跨域,这个注解能够实现办法级别的细粒度的跨域管制。咱们能够在类或者方增加该注解,如果在类上增加该注解,该类下的所有接口都能够通过跨域拜访,如果在办法上增加注解,那么仅仅只限于加注解的办法能够拜访。

示例:@RestController @RequestMapping(“/user”) @CrossOrigin public class UserController {@Autowired private UserService userService; @RequestMapping(“/findAll”) public Object findAll(){ return userService.list(); } }

办法二:实现 WebMvcConfigurer
这里能够通过实现 WebMvcConfigurer 接口中的 addCorsMappings() 办法来实现跨域。

@Configuration     public class WebConfig implements WebMvcConfigurer {/**          * 跨域反对          * @param registry          */         @Override         public void addCorsMappings(CorsRegistry registry) {registry.addMapping("/**")                     .allowedOrigins("*")                     .allowCredentials(true)                     .allowedMethods("GET", "POST", "DELETE", "PUT")                     .allowedHeaders(*)                     .maxAge(3600 * 24);         }     }

addMapping:配置能够被跨域的门路,能够任意配置,能够具体到间接申请门路。
allowedOrigins:容许所有的申请域名拜访咱们的跨域资源,能够固定单条或者多条内容,如:” “,只有百度能够拜访咱们的跨域资源。
allowCredentials:响应头示意是否能够将对 www.pizei.com 申请的响应裸露给页面。返回 true 则能够,其余值均不能够
allowedMethods:容许输出参数的申请办法拜访该跨域资源服务器,如:POST、GET、PUT、OPTIONS、DELETE 等。
allowedHeaders:容许所有的申请 header 拜访,能够自定义设置任意申请头信息,如:”X-YAUTH-TOKEN”
maxAge:配置客户端缓存预检申请的响应的工夫(以秒为单位)。默认设置为 1800 秒(30 分钟)。

办法三:Nginx 配置解决跨域问题
如果咱们在我的项目中应用了 Nginx,能够在 Nginx 中增加以下的配置来解决跨域

location / {add_header Access-Control-Allow-Origin *;        add_header Access-Control-Allow-Head
退出移动版