首页 > 编程语言 >java解决跨域问题

java解决跨域问题

时间:2023-01-09 11:37:00浏览次数:34  
标签:java 跨域 corsConfiguration 配置 org 解决 import 请求

什么是跨域   1)、协议不同 2)、域名不同(IP地址不同) 3)、端口号不同 跨域是指一个页面想获取另一个页面中的资源,如果这两个页面的协议、域名、子域名、端口不同,或者两个页面一个为IP地址另一个为域名地址,这种情况下所进行的访问行动都是跨域的。     CORS 以前存在一个技术:JSONP 跨域资源共享(Cross Origin Resource Share)是一种允许一个网页上的JavaScript向另一个域中发出AJAX请求机制。 默认情况下浏览器中禁止此类Web请求,并且这些请求会触发相同的同源安全策略错误。而使用java的CORS过滤器就可以实现网页向其他域发送请求。   代码演示解决跨域问题: 首先创建两个普通的 Spring Boot 项目,这个就不用我多说,第一个命名为 provider 提供服务,第二个命名为 consumer 消费服务,第一个配置端口为 8080,第二个配置配置为 8081,然后在 provider 上提供两个 hello 接口,一个 get,一个 post,如下:       在 consumer 的 resources/static 目录下创建一个 html 文件,发送一个简单的 ajax 请求,如下:  

 

由于同源策略的限制,请求无法发送成功。   使用 CORS 可以在前端代码不做任何修改的情况下,实现跨域,那么接下来看看在 provider 中如何配置。首先可以通过 @CrossOrigin 注解配置某一个方法接受某一个域的请求,如下:     这个注解表示这两个接口接受来自 http://localhost:8081 地址的请求,配置完成后,重启 provider ,再次发送请求,浏览器控制台就不会报错了,consumer 也能拿到数据了。

 

在 Spring Boot 中,还可以通过全局配置一次性解决这个问题,全局配置只需要在 SpringMVC 的配置类中重写 addCorsMappings 方法即可,如下:  

 

/** 表示本应用的所有方法都会去处理跨域请求,allowedMethods 表示允许通过的请求数,allowedHeaders 则表示允许的请求头。经过这样的配置之后,就不必在每个方法上单独配置跨域了。   工具类:
package com.geostar.statistics.config;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.cors.CorsConfiguration;
import org.springframework.web.cors.UrlBasedCorsConfigurationSource;
import org.springframework.web.filter.CorsFilter;

/**
 * 实现基本的跨域请求
 * @author linhongcun
 *
 */
@Configuration
public class CorsConfig {
    private CorsConfiguration buildConfig() {
        CorsConfiguration corsConfiguration = new CorsConfiguration();
        corsConfiguration.addAllowedOrigin("*"); // 允许任何域名使用
        corsConfiguration.addAllowedHeader("*"); // 允许任何头
        corsConfiguration.addAllowedMethod("*"); // 允许任何方法(post、get等)
        return corsConfiguration;
    }

    @Bean
    public CorsFilter corsFilter() {
        UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource();
        source.registerCorsConfiguration("/**", buildConfig()); // 对接口配置跨域设置
        return new CorsFilter(source);
    }
}

标签:java,跨域,corsConfiguration,配置,org,解决,import,请求
From: https://www.cnblogs.com/baitaotao/p/17036489.html

相关文章

  • 017 跨域问题-从springboot后台解决
    解决跨域问题:创建对应的包packagecom.example.adminspringboot.config;importorg.springframework.context.annotation.Bean;importorg.springframework.context.anno......
  • Java_基础总结
    总结。  一、运行环境jdk:开发工具包jre:运行时环境jvm:虚拟机编译:使用javac,将.java源文件编译为.class文件。运行:使用java,运行.class文件......
  • maven拉取成功但包识别不出的终极解决办法
    1,此处点上2,这两个点上3,选择实际的java版本4,清空缓存......
  • 03 JavaScript
    JavaScriptECMAScript和JavaScript的关系1996年11月,JavaScript的创造者--Netscape公司,决定将JavaScript提交给国际标准化组织ECMA,希望这门语言能够成为国际标准。次年,ECM......
  • (四)Java异常
    Java异常1、运行时异常运行时异常都是RuntimeException子类异常NullPointerException-空指针异常ClassCastException-类转换异常IndexOutOfBoundsExcepti......
  • win11系统新版edge不兼容网银如何解决【解决办法】
    由于目前国内的网银都是基于IE浏览器进行开发的,由于微软推行Edge,Win11把IE砍掉后,会将IE的链接强制跳转到Edge上,很多网银无法调用,对于需要使用Web网银的用户来说非常不方便......
  • Nginx常见的错误及解决方法
    1、Nginx 常见启动错误 有的时候初次安装nginx的时候会报这样的错误 sbin/nginx -c conf/nginx.conf 报错内容:sbin/nginx: error while loading shared libr......
  • JavaScript 性能优化
    1.内存管理内存管理介绍内存:由可读写单元组成,表示一片可操作空间管理:人为的去操作一片空间的申请、使用和释放内存管理:开发者主动申请空间、使用空间、释放空......
  • 解决错误:MISCONF Redis is configured to save RDB snapshots, but is currently not
    早上一上班发现系统登录不上去了,查看后台日志:Caused by: io.lettuce.core.RedisCommandExecutionException: MISCONF Redis is configured to save RDB snapshot......
  • Java方法
    方法System.out.println();//是什么吗?//系统类+对象+方法Java方法是一对语句的集合,他们一起负责执行一个功能方法是解决一类问题的步骤的有序组合方法包含于......