zoukankan      html  css  js  c++  java
  • spring boot跨域问题

      跨域是指不同域名之间相互访问。跨域,指的是浏览器不能执行其他网站的脚本。它是浏览器的同源策略造成的,是浏览器对JavaScript施加的安全限制。也就是如果在A网站中,我们希望使用Ajax来获得B网站中的特定内容,如果A网站与B网站不在同一个域中,那么就出现了跨域访问问题。

      什么是同一个域?同一协议,同一ip,同一端口,三同中有一不同就产生了跨域。也就是对于前后端分离来说,一定会有跨域问题,因为不是同一个服务,要不不同ip,要不不同端口。

      如何在spring boot中解决这个问题,只需添加下面配置即可:

     1 import org.springframework.context.annotation.Bean;
     2 import org.springframework.context.annotation.Configuration;
     3 import org.springframework.web.cors.CorsConfiguration;
     4 import org.springframework.web.cors.UrlBasedCorsConfigurationSource;
     5 import org.springframework.web.filter.CorsFilter;
     6 
     7 /**
     8  * 跨域配置
     9  */
    10 @Configuration
    11 public class CorsConfig {
    12   // 设置允许跨域的源
    13   private static String[] originsVal = new String[]{
    14       "127.0.0.1:8080",
    15       "localhost:8080",
    16       "google.com",
    17       "mail.google.com"
    18   };
    19 
    20   /**
    21    * 跨域过滤器
    22    *
    23    * @return
    24    */
    25   @Bean
    26   public CorsFilter corsFilter() {
    27     UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource();
    28     CorsConfiguration corsConfiguration = new CorsConfiguration();
    29     this.addAllowedOrigins(corsConfiguration);
    30     corsConfiguration.addAllowedHeader("*");  //添加允许访问的头
    31     corsConfiguration.addAllowedMethod("*");  //添加允许访问的方法
    32     corsConfiguration.addAllowedOrigin("*");  //添加允许访问的源,这里的*已经包含了originsVal数组里的源信息
    33     source.registerCorsConfiguration("/**", corsConfiguration);
    34     return new CorsFilter(source);
    35   }
    36 
    37   private void addAllowedOrigins(CorsConfiguration corsConfiguration) {
    38     for (String origin : originsVal) {
    39       corsConfiguration.addAllowedOrigin("http://" + origin);
    40       corsConfiguration.addAllowedOrigin("https://" + origin);
    41     }
    42   }
    43 }
  • 相关阅读:
    Strust2学习笔记
    EL与OGNL区别
    十进制与其他进制转换
    JSTL
    <jsp:include>和<%@include%>区别
    AngularJS 内置过滤器
    ubuntu下swift安装
    ubuntu下gerrit 安装部署
    java日期操作
    SpringMVC GET请求中文数据传递到Server端乱码
  • 原文地址:https://www.cnblogs.com/Qsunshine/p/10449689.html
Copyright © 2011-2022 走看看