最新要闻
- 快播:实火!《阿凡达2:水之道》预售首日总票房突破千万
- 小米13系列发布会时间偷跑 最新售价信息曝光:3999/4999元起售
- 天天头条:中国石化又一次产出99.999%高纯度氢:每年2100吨
- 即时看!12306购票页面变了:已取消查验核酸弹窗
- 天天观热点:双11期间快递达42.7亿件 你的收到了吗?
- 【快播报】员工爆料奶茶店用过期原料 老板:事儿太多
- 【全球热闻】刘海屏iPhone用上灵动岛:越狱软件开发者推出“灵动刘海”
- 路怒可怕!出租车插队未果隧道逼停保时捷 还质问开豪车了不起:罚600扣1分
- 节省1000元成本 特斯拉减配辅助停车的超声波雷达:把新车主们坑惨了
- 暴雪《魔兽世界》停服或致大量游戏工作室倒闭:代打行业寒冬
- 加绒款同价:361° 纯色卫衣/运动裤69元大促(40元券)
- Intel晒新显卡驱动表现:DX9游戏性能提升达80%
- 全球限量5000台!ThinkPad X1 Carbon 30周年纪念版即将上市
- 最新资讯:老马也失蹄 吞剑大师嘴插5把剑出意外被刺穿内脏:宣布收山
- NASA毅力号火星车和国际空间站上的SSD:出自群联之手
- 网友不知情下话费暴涨2倍至99元 客服:一般会提前通知
手机
警方通报辅警执法直播中被撞飞:犯罪嫌疑人已投案
票房这么火爆,如何请视障人士“看”一场电影?
- 警方通报辅警执法直播中被撞飞:犯罪嫌疑人已投案
- 男子被关545天申国赔:获赔18万多 驳回精神抚慰金
- 3天内26名本土感染者,辽宁确诊人数已超安徽
- 广西柳州一男子因纠纷杀害三人后自首
- 洱海坠机4名机组人员被批准为烈士 数千干部群众悼念
- 票房这么火爆,如何请视障人士“看”一场电影?
家电
环球即时:Springboot处理跨域请求
Springboot中如何处理跨域请求
一.什么是跨域?
我们知道Url的一般格式:协议 + 域名(子域名 + 主域名) + 端口号 + 资源地址
(资料图)
比如:
https://www.itquanmingxing.cn:8080/users 是由https + www + itquanmingxing.cn + 8080 + users组成。
只要协议,子域名,主域名,端口号这四项组成部分中有一项不同,就可以认为是不同的域,不同的域之间互相访问资源,就被称之为跨域。
而我们的浏览器默认是不允许跨域请求的,因为它们都使用了同源策略,同源策略是由 Netscape 提出的一个著名的安全策略,它是浏览器最核心也最基本的安全功能,现在所有支持 JavaScript 的浏览器都会使用这个策略。
但是我们在实际开发中,由于各种原因又经常有跨域的需求,比如:现在的前端开发中都是前后端分离的开发模式,数据的获取并非同源;或者A网站是电子商务管理订单,B网站是进销存抓取订单信息后做发货;再比如做单点登录,在A网站登录后,跳转到B网站时不需要再输入用户名密码等。
所以我们怎么解决这个跨域访问的问题呢?
二 什么是CORS
解决跨域请求,主要有JSONP,iframe,window.name,CORS等方式。其中CORS方式是最常用的跨域实现方式,而且是对各种请求方法、各种数据请求类型都是完美支持的。
跨域资源共享(CORS,Cross-origin resource sharing) 是一种机制,它使用额外的 HTTP 头来告诉浏览器 让运行在一个 origin (domain) 上的Web应用被准许访问来自不同源服务器上的指定的资源。当一个资源从与该资源本身所在的服务器不同的域、协议或端口请求一个资源时,资源会发起一个跨域 HTTP 请求。
原理:在服务器端设置允许跨域的请求头,从而实现跨域,服务器设置后前端通过正常的ajax请求即可。
三 Springboot中CORS的使用
CORS从具体的代码实现上来说比较方便,前端几乎不需要写任何代码就可以支持。主要是靠服务端进行配置。
CORS需要浏览器和服务器同时支持。目前所有浏览器都支持该功能,IE浏览器不能低于IE10。
整个CORS通信过程,都是浏览器自动完成,不需要用户参与。对于开发者来说,CORS通信与同源的AJAX通信没有差别,代码完全一样。浏览器一旦发现AJAX请求跨源,就会自动添加一些附加的头信息,有时还会多出一次附加的请求,但用户不会有感觉。
因此,实现CORS通信的关键是服务器。只要服务器实现了CORS接口,就可以跨域通信。
3.1 创建两个springboot项目
为了方便,创建一个空的project,然后在空的project中创建两个module代表两个不同源的项目。
先创建空的工程:
再创建两个module:
一个取名为provider(被访问的项目),添加web依赖,一个取名为consumer(发起访问的项目),添加web和thymeleaf依赖。
…
创建出来的项目结果如下:
3.2 添加测试代码
在provider项目中添加:
控制层方法:
在consumer项目中添加:
控制层方法和视图页中的ajax请求
修改consumer访问端口为8080:
3.3 启动项目测试
分别启动这两个项目
会发现由于同源策略的限制,请求无法发送成功。
3.4 使用CORS
好,那我们现在就使用 CORS 在前端代码不做任何修改的情况下,实现跨域。
在provider项目提供的方法上添加
@CrossOrigin(value = "http://localhost:8088")
重新启动项目访问:发现可以成功访问了。
按F12查看请求头信息,发现多了一个允许访问的域。
3.5 全局配置CORS
这个注解可以用在方法上,也可以用在Controller上,但如果每一个方法上都去加注解包括说每个Controller上都去加注解都很麻烦,我们可以通过全局配置一次性解决这个问题。
全局配置只需要在 SpringMVC 的配置类中重写 addCorsMappings 方法即可,方法上就不用加了,代码如下:
package com.example.provider.config;import org.springframework.context.annotation.Configuration;import org.springframework.web.servlet.config.annotation.CorsRegistry;import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;@Configurationpublic class ProviderMvcConfig implements WebMvcConfigurer { @Override public void addCorsMappings(CorsRegistry registry) { registry.addMapping("/**")// 项目中的所有接口都支持跨域 .allowedOrigins("http://localhost:8088") //允许哪些域能访问我们的跨域资源 .allowedMethods("*")//允许的访问方法"POST", "GET", "PUT", "OPTIONS", "DELETE"等 .allowedHeaders("*");//允许所有的请求header访问,可以自定义设置任意请求头信息 }}
这里我们的ProviderMvcConfig配置类实现了WebMvcConfigurer接口并且重写了addCorsMappings方法,我们来简单介绍下我们的配置信息addMapping:配置可以被跨域的路径,可以任意配置,可以具体到直接请求路径。allowedOrigins:允许哪些域名可以访问我们的跨域资源,可以固定单条或者多条内容。 如:allowedOrigins("http://www.baidu.com")只有百度可以访问我们的跨域资源。 allowedOrigins("*")代表允许任意路径allowedMethods:设置允许的请求方法类型访问该跨域资源服务器,如:POST、GET、PUT、OPTIONS、DELETE等。allowedHeaders:允许所有的请求header访问,可以自定义设置任意请求头信息,如:"X-YYYY-TOKEN"allowCredentials: 是否允许请求带有验证信息,用户是否可以发送、处理 cookiemaxAge(3600) 设置允许访问的时间
3.5 安全隐患。
置任意请求头信息,如:“X-YYYY-TOKEN”allowCredentials: 是否允许请求带有验证信息,用户是否可以发送、处理 cookiemaxAge(3600) 设置允许访问的时间``
3.5 安全隐患。
CORS 的工作过程是通过 Ajax 发送跨域请求,这个也有潜在的威胁存在,常见的就是 CSRF(Cross-site request forgery)跨站请求伪造。跨站请求伪造也被称为 one-click attack 或者 session riding,通常缩写为 CSRF 或者 XSRF,是一种挟制用户在当前已登录的 Web 应用程序上执行非本意的操作的攻击方法 。关于 CSRF 攻击的具体介绍和防御办法,我们在学习SpringSecurity(spring安全框架)后再具体讲解。
-
shell编程时出现:未预期的符号 `then' 附近有语法错误 或者 : 行 : `then'
未预期的符号`then 附近有语法错误 :行:`then `if[-f$i];then 未预期的符号`done 附近有语法错误
来源: 环球即时:Springboot处理跨域请求
shell编程时出现:未预期的符号 `then' 附近有语法错误 或者 : 行 : `then'
世界最新:CSS Margin中5个经典布局解决方案,重难点知识,记得收藏复习
快播:实火!《阿凡达2:水之道》预售首日总票房突破千万
小米13系列发布会时间偷跑 最新售价信息曝光:3999/4999元起售
天天头条:中国石化又一次产出99.999%高纯度氢:每年2100吨
即时看!12306购票页面变了:已取消查验核酸弹窗
天天观热点:双11期间快递达42.7亿件 你的收到了吗?
【快播报】员工爆料奶茶店用过期原料 老板:事儿太多
【全球热闻】刘海屏iPhone用上灵动岛:越狱软件开发者推出“灵动刘海”
路怒可怕!出租车插队未果隧道逼停保时捷 还质问开豪车了不起:罚600扣1分
节省1000元成本 特斯拉减配辅助停车的超声波雷达:把新车主们坑惨了
暴雪《魔兽世界》停服或致大量游戏工作室倒闭:代打行业寒冬
加绒款同价:361° 纯色卫衣/运动裤69元大促(40元券)
Intel晒新显卡驱动表现:DX9游戏性能提升达80%
每日快播:一键部署应用到远程服务器,IDEA 官方 Docker 插件太顶了!
Vue视频 | 【Vue2 + Vue3 前端教程】完整版
今日关注:记录--微信小程序获取用户信息的最新方法记录
当前短讯!12 虚拟机字节码执行引擎_字节码执行机制
CompletableFuture源码解析
全球限量5000台!ThinkPad X1 Carbon 30周年纪念版即将上市
最新资讯:老马也失蹄 吞剑大师嘴插5把剑出意外被刺穿内脏:宣布收山
NASA毅力号火星车和国际空间站上的SSD:出自群联之手
网友不知情下话费暴涨2倍至99元 客服:一般会提前通知
每日快讯!Redis配置、优化及相关命令
《阿凡达》为何时隔13年推出续作?卡梅隆回应:光剧本就写了4版
全球时讯:纯电越野车真香!奇瑞也来参一脚:邀网友共创、最多奖励5万
每日视讯:一天1500元 索赔77万元代步车费用!博主曝特斯拉“精彩”上诉状
黄牛栽了!急于出手RTX 4080
两轮电动车在印度卷起来了:5年/6万公里质保、1年免费充电
Power BI 15 DAY
【高精密时钟】NTP网络校时服务器在WIN平台下调试步骤
微头条丨Chatgpt注册全流程教程
KMP算法详解-字符串匹配
焦点信息:精美的web前端源码的特效
天天短讯!女子连续服用6片感冒药致肝衰竭 专家提醒:药不能随便吃
男子被狗舔伤口发视频炫耀狗子贴心:听网友劝后打狂犬疫苗
全球播报:乐视诉清华大学获赔:内网提供电影下载 7年前就关停了
国服腾讯、网易等谁来代理?暴雪《暗黑4》发售时间曝光:容量80GB
环球动态:男子醉驾撞树想溜 爱车自动报警 并发送了定位
全球热点!JS设计模式 之 发布-订阅模式
最近沉迷Redis网络模型,无法自拔!终于知道Redis为啥这么快了
热点聚焦:行为管理(锐捷行业网关篇)
全球时讯:文盘Rust -- r2d2 实现redis连接池
前端精准测试实践
世界速递!JavaScript中 FileReader 对象详解
【世界报资讯】大数据-数据仓库-实时数仓架构分析
热头条丨JAVA8 函数式编程(1)- Lambda表达式
易基因|m6A去甲基化酶ALKBH5通过降低PHF20 mRNA甲基化抑制结直肠癌进展 | 肿瘤研究
焦点日报:火山引擎 DataTester:如何用 A/B 测试做产品增长?
WTM+InfluxDB时序数据库数据查询并放到DataTable中
中科慧政 & JNPF :全面开启智慧政务,灵活满足政务办公需求
【焦点热闻】南墙WAF-最好的免费Web应用防火墙
天天关注:高光时刻 | 方正璞华联合开发的「人力资源法律服务共享平台」在创新创业大赛中获奖
全球新消息丨95年属猪的2019年运势
【环球热闻】绳责的意思(绳责)
天天动态:水滴筹标题范文(水滴筹标题怎么写)
今头条!应用昆虫学(应用昆虫学报)
环球头条:工厂找哪个网站?
焦点信息:促排卵期间注意哪些事项(促排卵期间注意事项)
天天资讯:越南旅游签证办理流程及费用(越南旅游签证办理流程)
全球快报:空鼻症是什么样(空鼻症是什么病)
【天天新视野】电脑桌面怎么恢复到原来的样子(电脑桌面怎么恢复到原来的样子)
每日信息:闲鱼卖二手
微资讯!西藏万隆虫草鹿鞭王
环球观焦点:77电玩城(77dizhi)
热头条丨低温性能革命性进步!宁德时代:钠电池有望装车500公里续航车型
当前播报:非典是哪一年一共死多少人(非典是哪一年)
天天热讯:空调显示屏上显示df是什么意思(空调运行中显示屏出现字母df是什么意思)
全球报道:我国现存新能源汽车相关企业56.8万家,仅2021年新增17万家
全球要闻:日本电子巨头罗姆将量产下一代半导体:提高用电效率、增加电动车续航里程
环球今日报丨传感器和处理器如何打造更智能、更自主的机器人?
世界即时:如何实现工业自动化?传感器对于工业自动化有什么样的意义
天天新动态:工业自动化如何实现?
当前焦点!使用cpolar(内网穿透)最低成本搭建网站
如何在Windows AD域中驻留ACL后门
当前热点-灵感来自微信:微软计划开发一站式“超级应用”
环球即时看!惊险!SUV被货车顶上铁轨 火车驶来瞬间逃离
玩家们都嫌太贵!曝英伟达考虑将RTX 4080降价
世界讯息:AI生成裸照谁之过?真相恐怕和你想的不一样
3小时超值!《阿凡达2》电影票价普遍低于50元 IMAX版80元
Redis 的 keys 命令你知道有多慢吗?
“抽烟哥”红到国外 田协紧急倡议应积极正向:全马冲进3个半小时是狠人
世界百事通!RTX 4080全球销售疲软:太贵了我再等等
《阿凡达2》伦敦首映式
惊险一幕!后车记录仪拍下特斯拉失控瞬间 网友分析司机被特斯拉辅助“救”两次
今日大雪:仲冬时节正式开始 全国大部气温回升雨雪稀少
每日观察!《原神》3.3版本今日上线:风元素新角色来了 还有原石可领
葡萄牙6-1大胜瑞士 C罗31场首发终结:加练千个西班牙点球大战仍出局 连续三届无缘8强
看齐QQ音乐?Apple Music新功能来了:支持iPhone、iPad唱卡拉OK
安兔兔11月iOS设备好评榜出炉:iPhone 14全系未上榜
SpringBoot构建RESTful风格应用
环球速讯:Kubernetes单机创建MySQL+Tomcat演示程序:《Kubernetes权威指南》第一章demo报错踩坑
全球最新:npm或者yarn安装sharp太慢、失败等问题
世界今亮点!不止是中药 连花清瘟新专利来了 可用于制作口罩、内衣、防护服等
时讯:200元耳机降噪效果比肩2000元!贝壳王子MO3 2代上手:同价位天花板
全国单日票房一度超4000万元:《阿凡达2》万众期待
热门:快升级5G!明年4G网速体验更糟糕:原因很无解
54年了!波音747飞机正式停产 一记录保持37年
焦点播报:MAUI新生3.4-深入理解XAML:数据模板DataTemplate