springboot 添加允许跨域_SpringBoot添加支持CORS跨域访问

CORS(Cross-Origin Resource Sharing)"跨域资源共享",是一个W3C标准,它允许浏览器向跨域服务器发送Ajax请求,打破了Ajax只能访问本站内的资源限制,CORS在很多地方都有被使用,微信支付的JS支付就是通过JS向微信服务器发送跨域请求。开放Ajax访问可被跨域访问的服务器大大减少了后台开发的工作,前后台工作也可以得到很好的明确以及分工,下面我们就看讲一下如何让你的SpringBoot项目支持CORS跨域。

本章目标

基于SpringBooot项目搭建可以站外Ajax请求访问的跨域资源服务器。

构建项目

使用IDEA开发工具创建一个SpringBoot项目,预先添加Web依赖即可,项目结构如下图1所示:

9f28977e2b3e6010fe24a7fdd7b381cc.png

图1

CORSConfiguration

我们只需要添加项目Web依赖就可以了,下面我们开始添加CORS的配置信息,我们创建一个CORSConfiguration配置类,如下图2所示:

c46b453fb36ff7af6f9f277962bbc452.png

图2

上图2内我们的CORSConfiguration配置类继承了WebMvcConfiugrationAdaper父类并且重写了addCorsMappings方法,我们来简单介绍下我们的配置信息

addMapping:配置可以被跨域的路径,可以任意配置,可以具体到直接请求路径。

allowedMethods:允许所有的请求方法访问该跨域资源服务器,如:POST、GET、PUT、DELETE等。

allowedOrigins:允许所有的请求域名访问我们的跨域资源,可以固定单条或者多条内容,如:"http://www.baidu.com",只有百度可以访问我们的跨域资源。

allowedHeaders:允许所有的请求header访问,可以自定义设置任意请求头信息,如:"X-YAUTH-TOKEN"

编写跨域资源请求

我们的跨域配置到目前来说已经配置完成了,SpringBoot已经为我们内置相关配置,我们只需要重写方法修改部分参数即可,下面我们来创建一个测试跨域资源的控制器,如下图3所示:

4e8645e2581ec2fa4493f85b93485a24.png

图3

在图3内的IndexController控制器内,我们仅仅添加了一个测试返回文本的内容,当然这个控制器可以处理任意业务逻辑。

测试跨域请求

我们在项目外创建一个index.html页面(上传码云后会在resources目录找到),页面内添加部分jquery代码,如下图4所示:

22c3cb45e37e230a34e2612121404959.png

图4

我们引用了在线的jquery代码,并且在页面加载的时候为id=cors的输入按钮绑定点击事件,点击按钮时就会请求我们的/cors跨域资源路径,下面我们来运行项目测试下跨域请求,项目运行日志如下图5所示:

82555576505602654595cbdbc5df39db.png

图5

可以看到上图5内项目启动时SpringBoot内置的SpringMVC已经把我们的/cors添加到映射集合,我们打开之前编写的index.html网页,界面效果如下图6所示:

9456cf0c83f5b8a480290c4d12dce17b.png

图6

接下来我们点击“CORS跨域测试”按钮,查看下效果,如下图7所示:

26387d68cc0bafb8f535749a06b010eb.png

图7

上图7内可以看到,界面给我返回了我们/cors路径返回的文本内容,证明我们的ajax请求完美的通过跨域资源库访问了开放跨域的资源路径。

下面我们来把我们的跨域配置注释掉,重启项目后刷新index.html再次点击“CORS跨域测试”按钮,界面输出效果如下图8所示:

710bd7a91f030a79ab90336871698d22.png

图8

可以看到我们点击后并没有获取到返回内容,而是给我们提示了异常,告诉我们无法加载资源。

本章总结

本章简单讲解了SpringBoot项目对CORS请求的处理,完全自定义处理请求路径,可对请求头信息以及请求的域名进行控制。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/422636.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

前端学习(359):svn服务器配置金和客户端安装

右键---新建仓库 下一步 写入仓库名称 下一步 下一步 点击finish 创建完成 选择user 单击右键 创建账号密码 创建完成 下载客户端 点击next 点击next 一直next安装 安装完成发现小乌龟(需要重启电脑)

neo4j与mysql数据库_Neo4j: 迁移MySQL的数据到Neo4j

目的: 用于社交关系的管理和维护. 社交关系是一种网状的关系图, RDBMS难于维护这样的数据.安装和配置需要满足下面几个条件安装 neo4j-apoc-procedures插件安装 APOC插件设置一下环境变量NEO4J_INSTALL_PATH/path/to/neo4j安装插件和JDBC驱动把mysql-connector-java-8.0.11.jar…

前端学习(360):svn操作前期连接工作

把地址发送给所有人 checkout 单击ok 得到账号密码

前端学习(361):svn操作后续

work下面新建文件夹 commit上传 上传 组员update 出现文件夹 新建文件夹 右键上传 点击小乌龟show-log 记录问题 版本操作 再次输入 bbb 先更新 更新之后再次上传 添加了bbb 单击右键 回滚

mysql 慢sql分析_如何分析Mysql慢SQL

内容摘要:开启慢查询日志捕获慢SQL使用explain分析慢SQL使用show profile查询SQL执行细节常见的SQL语句优化一、开启慢查询日志捕获慢SQL① 查询mysql是否开启慢日志捕获:SHOW VARIABLES LIKE %slow_query_log%;如果还没开启的话,开启&#x…

x264编码参数大测试:03 subme与crf(c)

一、测试内容 测试方法—— x264编码参数大测试:索引贴 http://www.cnblogs.com/zyl910/archive/2011/12/14/x264_encode_param.html 测试参数—— subme:9、10、11。设定子像素(subpixel)运动估计(motion estimation&…

mysql 执行查询_MySQL查询的执行过程

我们总是希望MySQL能够获得更高的查询性能,最好的办法是弄清楚MySQL是如何优化和执行查询的。一旦理解了这一点,就会发现:很多的查询优化工作实际上就是遵循一些原则让MySQL的优化器能够按照预想的合理方式运行而已。当向MySQL发送一个请求的…

膨胀

转载于:https://www.cnblogs.com/carekee/articles/2296335.html

python安装依赖失败_python执行安装第三方依赖numpy失败:error: Unable to find vcvarsall.bat...

一台计算机上同时安装了python2.7和python3.7。现在为python2.7安装numpy包。失败:error: Unable to find vcvarsall.bat下载安装 Microsoft Visual C Compiler for Python 2.7user installations are disabled via policy on the machine.安装之后:C:\U…

zabbix mysql主从_zabbix监控mysql主从状态

1. zabbix客户端编辑脚本 /tmp/shell/mysql_slave_status.sh#! /bin/bash/usr/bin/mysql -p123456 -e ‘show slave status \G;‘|grep -E "Slave_IO_Running|Slave_SQL_Running"|awk ‘{print $2}‘|grep -c "Yes"2. 授执行权限chmod x mysql_slave_statu…

python输入日期时间转换格式_python如何格式化日期?

常用的时间函数如下:获取当前日期:time.time()获取元组形式的时间戳:time.local(time.time())格式化日期的函数(基于元组的形式进行格式化):(1)time.asctime(time.local(time.time()))(2&#x…

mysql 数据库表锁死_mysql 数据库表被锁住了_Mysql数据库表锁死如何处理?

处理方式有如下三种:1.查询不是sleep或者有状态的sqlselect * from information_schema.processlist where command !Sleep or state !2.查询运行中的事务select trx_state, trx_started, trx_mysql_thread_id, trx_query from information_schema.innodb_trx3.查看…

pycharm自带python环境_Pycharm安装+python安装+环境配置

Pycharm工具:1.安装jdk(64位):jdk-8u65-windows-x64.exe路径:C:\Program Files\Java(默认路径)2.配置环境步骤一:系统变量→新建 JAVA_HOME变量 。变量值填写jdk的安装目录(本人是C:\Program Files\Java\jdk1.8.0_65)步骤二&#…

大学四年, 专业心得

林锐有一本书, 叫做 <<高质量 C/C 程序设计指南>>. 其中附录里有他的一篇十分震撼的文章叫做 <<大学十年>>. 讲述了林锐从大学以来学习的经历和所获得的感想. 我看过后, 内心深深的被触动了, 都是大学 4 年, 为何差距如此之大? 都是学计算机专业, 为何…

计算机视觉基础(11)——语义分割和实例分割

前言 在这节课&#xff0c;我们将学习语义分割和实例分割。在语义分割中&#xff0c;我们需要重点掌握语义分割的概念、常用数据集、评价指标&#xff08;IoU&#xff09;以及经典的语义分割方法&#xff08;Deeplab系列&#xff09;&#xff1b;在实例分割中&#xff0c;需要知…

使用vs2010+WCF发布json数据,ExtJS4.0进行调用

花了近一天的时间调试解决&#xff0c;希望对有相同需要的朋友有帮助&#xff1a;1、新建一空网站,添加一个web页面webform1.aspx&#xff0c;添加ExtJs相关引用<link href"ExtJs4.0.7/resources/css/ext-all.css"rel"stylesheet"type"text/css&qu…

java qq通信_结对博客(Java通信项目QQ)

项目名称&#xff1a;JAVA通信项目——QQ成员&#xff1a;邢正&#xff0c;郑振兰项目需求&#xff1a;QQ每个人都用过&#xff0c;它的意义就不再讲了。之所以选择做QQ事因为它有挑战性&#xff0c;涉及到通信、传输、swing等各种知识。(好吧我不装逼了&#xff0c;说的直白点…

java深度克隆大数据_Java - 深拷贝技巧

先让我描述一下问题&#xff1a;我在某Action(struts2.x)-A中写了一个功能P,以当前用户的某个标识F 1时需要走这个功能,而且这个功能因某些原因已经侵入到了其他一些method中。顺便一提,A中获得当前用户session的method已经被父类封装好了。然后我的代码已经push上去了,第二天…