spring boot 跨域(springboot跨域问题)

  本篇文章为你整理了spring boot 跨域(springboot跨域问题)的详细内容,包含有springboot跨域注解 springboot跨域问题 springboot跨域配置无效 springboot跨域设置 spring boot 跨域,希望能帮助你了解 spring boot 跨域。

  import org.springframework.context.annotation.Configuration;

  import org.springframework.web.servlet.config.annotation.CorsRegistry;

  import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;

  @Configuration

  public class CorsConfig implements WebMvcConfigurer {

   @Override

   public void addCorsMappings(CorsRegistry registry) {

   registry.addMapping("/**") // 所有mapping路径

   .allowedOriginPatterns("*") // 所有域 spring-boot 2.4.0及以下使用.allowedOrigins("*")

   .allowedMethods("POST","GET","PUT","DELETE","OPTIONS") // 请求方式

   .allowedHeaders("*") // 所有方法头

   .maxAge(168000) // 等待间隔时间(时间过了则需再次认证)

   .allowCredentials(true); // cookie

  

 

 

  局部跨域。使用CrossOrigin注解,可修饰类或者方法。

  

@PostMapping("/log")

 

  @ResponseBody

  @CrossOrigin

  public String logPost(@RequestBody JSONObject json, HttpSession session) {

   String username = json.getString("username");

   String password = json.getString("password");

   User user = userService.getUserById(username, password);

   if (user == null) return RestResult.Error("账号或者密码错误!");

   session.setAttribute("user", user);

   return RestResult.OK(UserTokenUtils.encodeUserToKen(user));

  

 

  需要注意的是既是后端开启跨域并允许携带cookie,但是前端每次访问后端cookie还是会不断变化。导致HttpSession无法使用
 

  如果想使用HttpSession(后端做无状态服务器,就不用HttpSession。转而使用JWT技术),就需要
 

  1.每次请求携带cookie

  

// 这是ajax请求使用axios.js

 

  axios.defaults.withCredentials = true // axios发送请求带上cookie,有cookie就有session_id

  

 

  2.设置反向代理
 

  开发阶段 vue-cli

  

devServer: {

 

   port: 8080,

   // 设置代理

   proxy: {

   // 替换了axios请求中的/api

   /api: {

   // 代理地址,这里设置的地址会代替axios中设置的baseURL

   target: http://192.168.100.213:8088/,

   // 如果接口跨域,需要进行这个参数配置

   changeOrigin: true,

   ws: true,

   pathRewrite: {

   ^/api:

  

 

  生产阶段 ngnix

  

server {

 

   listen 80;

   server_name localhost;

   location / {

   root html;

   index index.html index.htm;

   # 配置代理

   location /api/ {

   proxy_pass http://192.168.100.159:8088/;

   proxy_set_header Host 127.0.0.1;

   proxy_set_header X-Real-IP $remote_addr;

   proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

  

 

  以上就是spring boot 跨域(springboot跨域问题)的详细内容,想要了解更多 spring boot 跨域的内容,请持续关注盛行IT软件开发工作室。

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: