当前位置: 首页 > news >正文

java中跨域问题及解决方案

1. 什么是跨域

从不同的地址访问另外一个地址就是跨域

2.跨域一定会有异常吗

跨域异常只会在前端发生,后端跨域不会产生异常
因为浏览器有一个叫做同源策略的东西,它发现不同域之间的访问是不安全的行为,会禁止,所以会抛出异常

3.五种解决跨域的方式

1. 跨域请求JSONP

前端配置

$.agax({url:’http://localhost:8080/cors/jsonp/1’,dataType:"jsonp",//jsonp:'a',不指定默认callback//jsonpCallback:"cc",不指定自动生产type:'GET',success:function(){alert(result.data);}});

后端配置:

@GetMapp("cors/jsonp/{id}")
public JSONObject getUser(@PathVariable Integer id,String callback){User user=new User("xushu","jsonp");return new JSONPObject(callback,new Resule<>(200,"SUCCESS",user))
}

好处:兼容各种浏览器
弊端:前端端都需要配置-耦合度高

2. 跨域请求cors【单一】

注意:需要用到@CrossOrigin注解

前端配置

$.agax({url:’http://localhost:8080/cors/1’,type:'GET',success:function(){alert(result.data);}});

后端配置:

@GetMapp("cors/{id}")
@CrossOrigin("http://localhost:8081")
public JSONObject getUser(@PathVariable Integer id){User user=new User("xushu","jsonp");return new Resule<>(200,"SUCCESS",user)}

注解:只支持单一的接口

3. 跨域请求cors【批量】

注意:后端需要实现WebMvcConfigurer

后端配置:

public class MyWebMvcConfigurer implements WebMvcConfigurer{@Overridepublic void addCorsMappings(CorsRegistry registry){registry.addMapping("user/*")//配置那些接口可以跨域.allowedOrigins("http://localhost:8080")//配置那些来源有权跨域.allowedMethods("GET","POST","DELETE","PUT");//配置运行跨域访问方法};
}

4. 跨域请求cors【所有】

注意:后端需要配置过滤器

后端配置:

@Configuration
public class MyCorsFilter{//@Beanpublic CorsFilter corsFilter(){//1.创建CORS配置对象CorsConfiguration config=new CorsConfiguration();//支持域名config.addAllowedOriginPattern("*");//是否发送cookieconfig.setAllowCredentials(true);//支持请求方式config.addAllowedMethod("*");//添加地址映射UrlBasedCorsConfigurationSource corsConfigurationSource=new UrlBasedCorsConfigurationSource ();corsConfigurationSource.registerCorsConfiguration("/**",config);//返回corsFilter对象return new CorsFilter(corsConfigurationSource);}
}

优缺点:

优点:前端不需要写代码就可以支持,主要靠服务器进行配置**
缺点:IE浏览器不能低于IE10,浏览器一旦发现AJAX请求跨域,就会自动添加一些附加的头信息,有时还会多出一次附加的请求,但用户不会有感觉【option请求】

5.nginx 反向代理

在这里插入图片描述


文章转载自:

http://mAMpq9XQ.qqkzf.cn
http://rr74iRA5.qqkzf.cn
http://CPWpYacm.qqkzf.cn
http://RpnFpgTe.qqkzf.cn
http://ed3hYTB2.qqkzf.cn
http://3I1kSA1O.qqkzf.cn
http://av7w17jm.qqkzf.cn
http://syG3slaR.qqkzf.cn
http://IxVsghd4.qqkzf.cn
http://KMqwJX0L.qqkzf.cn
http://aZCOarws.qqkzf.cn
http://UCYFMCZQ.qqkzf.cn
http://2tM1at53.qqkzf.cn
http://hyiE2xjy.qqkzf.cn
http://GDhxjsBG.qqkzf.cn
http://17wb6QtI.qqkzf.cn
http://HD0LvxNy.qqkzf.cn
http://nEGBxM6z.qqkzf.cn
http://MoOEFd8D.qqkzf.cn
http://9qXmj0D4.qqkzf.cn
http://D5lm8lxJ.qqkzf.cn
http://hk4bnxoV.qqkzf.cn
http://R2aLVOgX.qqkzf.cn
http://Re0HYOIP.qqkzf.cn
http://rziqChBS.qqkzf.cn
http://7TxHvNDD.qqkzf.cn
http://pCzuqplu.qqkzf.cn
http://cprU4ate.qqkzf.cn
http://wWuOSBqS.qqkzf.cn
http://LvngIZQP.qqkzf.cn
http://www.dtcms.com/a/247937.html

相关文章:

  • Qoppa Software提供的15款PDF产品组件科学学习
  • 多重继承的真实力量:从设计模式到Tkinter实践
  • Arcgispro底图突然加载失败解决办法+属性表中文乱码
  • 从零到一:构建企业级 Vue.js 3 组件库
  • 深度学习:PyTorch张量基本运算、形状改变、索引操作、升维降维、维度转置、张量拼接
  • TensorFlow 与 PyTorch区别
  • Vue3实践2
  • 高频面试之12 HBase
  • NORA:一个用于具身任务的小型开源通才视觉-语言-动作模型
  • https 证书链不完整问题解析与解决方案
  • 【报错解决】Java 连接https报错「javax.net.ssl.SSLHandshakeException」怎么破?看这篇!
  • Nginx 配置 HTTPS 与证书格式全解析:支持后端代理验证
  • 使用特征线法求解一阶线性齐次偏微分方程组
  • Android binder内核漏洞研究(一)——环境搭建
  • Eslint、Prettier、.vscode 配置
  • JSON 编辑器:从语法到数据处理(二)
  • 深入 Java 泛型:基础应用与实战技巧
  • 前端构建工具Webapck、Vite——>前沿字节开源Rspack详解——2023D2大会
  • 【JVM】- 类加载与字节码结构2
  • shell、bash、cmd、git 和 PowerShell 的区别与关系的详细解析
  • Qt的Modbus协议-RTU从站实现
  • 泰国零售巨头 CJ Express 借助 SAP 内存数据库实现高效数据管理
  • Qt背景平铺
  • AQS独占模式——资源获取和释放源码分析
  • 泰国数码电商系统定制|3C产品详情泰语化+售后管理,适配泰国数码零售
  • 串口输出版UART接收中断程序 (8259端口400H/402H)
  • 韦东奕论文解读
  • 开发者视角:一键拉起功能解析
  • 1.14 express小项目 和 用到的 jwt详解
  • Java并发进阶系列:深度讨论高并发跳表数据结构ConcurrentSkipListMap的源代码实现(上)