springboot解决跨域问题跨域

使用vue+axios+spring boot前后端分离项目时会出现跨域问题

解决方式:

一: 全局配置

 1     /**
 2      * 就是注册的过程,注册Cors协议的内容。
 3      * 如: Cors协议支持哪些请求URL,支持哪些请求类型,请求时处理的超时时长是什么等。
 4      */
 5     @Override
 6     public void addCorsMappings(CorsRegistry registry) {
 7         registry
 8                 .addMapping("/**")// 所有的当前站点的请求地址,都支持跨域访问。
 9                 .allowedMethods("GET", "POST", "PUT", "DELETE") // 当前站点支持的跨域请求类型是什么。
10                 .allowCredentials(true) // 是否支持跨域用户凭证
11                 .allowedOrigins("*") // 所有的外部域都可跨域访问。 如果是localhost则很难配置,因为在跨域请求的时候,外部域的解析可能是localhost、127.0.0.1、主机名
12                 .maxAge(60); // 超时时长设置为1小时。 时间单位是秒。
13     }

二: 针对单个接口,使用注解@CrossOrigin

 1 /**
 2  * @desc
 3  * @author guozhongyao
 4  * @date 2020/03/22 17:05
 5  */
 6 @RestController
 7 @RequestMapping("/user")
 8 @RequiredArgsConstructor
 9 @CrossOrigin(origins = "*",maxAge = 3600)
10 public class UserController {
11
12     final UserMapper userMapper;
13
14     @GetMapping("/getOne/{id}")
15     public User getOne(@PathVariable("id") Integer id) {
16         return userMapper.getById(id);
17     }
18 }

三: 自定义跨域过滤器

1,编写过滤器

 1 /**
 2  * @desc 跨域过滤器
 3  * @author guozhongyao
 4  * @date 2020/3/30 15:54
 5  */
 6 class CrosFilter implements Filter {
 7
 8     @Override
 9     public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
10         HttpServletResponse res = (HttpServletResponse) response;
11         //*号表示对所有请求都允许跨域访问
12         res.addHeader("Access-Control-Allow-Origin", "*");
13         res.addHeader("Access-Control-Allow-Methods", "*");
14         chain.doFilter(request, response);
15     }
16 }

2, 注册过滤器

 1     /**
 2      * @desc 注册自定义跨域过滤器
 3      * @author guozhongyao
 4      * @date 2020/3/30 15:52
 5      */
 6     @Bean
 7     public FilterRegistrationBean registerFilter(){
 8         FilterRegistrationBean bean = new FilterRegistrationBean();
 9         bean.addUrlPatterns("/*");
10         bean.setFilter(new CrosFilter());
11         return bean;
12     }

方式三与方式一一样的,推荐第一种

原文地址:https://www.cnblogs.com/alenblue/p/12598959.html

时间: 2024-08-29 23:03:24

springboot解决跨域问题跨域的相关文章

SpringBoot解决跨域请求拦截

前言 同源策略:判断是否是同源的,主要看这三点,协议,ip,端口. 同源策略就是浏览器出于网站安全性的考虑,限制不同源之间的资源相互访问的一种政策. 比如在域名https://www.baidu.com下,脚本不能够访问https://www.sina.com源下的资源,否则将会被浏览器拦截. 注意两点: 1.必须是脚本请求,比如AJAX请求. 但是如下情况不会产生跨域拦截 <img src="xxx"/> <a href='xxx"> </a&

Vue-cli proxyTable 解决开发环境的跨域问题(转)

Vue-cli proxyTable 解决开发环境的跨域问题 和后端联调时总是会面对恼人的跨域问题,最近基于Vue开发项目时也遇到了这个问题,两边各自想了一堆办法,查了一堆资料,加了一堆参数,最后还得我把自己的localhost映射成上线时将要使用的域名.今天翻看代码时,突然发现vue-cli的config文件里有一个参数叫proxyTable,看这个名字就感觉能解决问题,于是我就去搜了一下,果然.在vuejs-templates,也就是vue-cli的使用的模板插件里,有关于API proxy

解决项目中的跨域操作问题

浏览器存在许多安全策略,其中同源策略就是其中一个,所谓同源策略也叫同域名策略,即只有协议+域名+端口一致的情况下才可以相互访问,其目的就是为了保护用户信息的安全,同源策略现在的范围包括三方面:1).Cookie.LocalStorage.IndexDB无法读取:2).DOM无法获取:3).AJAX请求不能发送.这里主要介绍两种解决AJAX请求不能发送的解决方案:JSONP和CORS.JSONP是一种前端的解决方式:CORS是跨域资源共享,在服务端实现. 一.JSONP 这里使用jquery的$.

Vue-cli proxyTable 解决开发环境的跨域问题

Vue-cli proxyTable 解决开发环境的跨域问题 proxyTable: { '/list': { target: 'http://api.xxxxxxxx.com', pathRewrite: { '^/list': '/list' } } } 这样我们在写url的时候,只用写成/list/1就可以代表api.xxxxxxxx.com/list/1.那么又是如何解决跨域问题的呢?其实在上面的'list'的参数里有一个changeOrigin参数,接收一个布尔值,如果设置为true,

[HTML5_JS跨域]JavaScript跨域总结与解决办法

什么是跨域 JavaScript出于安全方面的考虑,不允许跨域调用其他页面的对象.但在安全限制的同时也给注入iframe或是ajax应用上带来了不少麻烦.这里把涉及到跨域的一些问题简单地整理一下: 首先什么是跨域,简单地理解就是因为JavaScript同源策略的限制,a.com 域名下的js无法操作b.com或是c.a.com域名下的对象.更详细的说明可以看下表: 特别注意两点: 第一,如果是协议和端口造成的跨域问题“前台”是无能为力的, 第二:在跨域问题上,域仅仅是通过“URL的首部”来识别而

解决js获取数据跨域问题,jsonP

网上说了一些jsonp的示例,感觉都没用,最后研究了一下,调用腾讯的一个api.最后要加output=jsonp&callback=?这个,比较适用. var url = "http://apis.map.qq.com/ws/place/v1/search?boundary=nearby(39.908491,116.374328,1000)&keyword=%E6%88%90%E9%83%BD&key=OB4BZ-D4W3U-B7VVO-4PJWW-6TKDJ-WPB77

Nodejs代理解决开发环境下跨域问题

前后端分离的项目,需要解决开发环境下跨域的问题: 转载链接:https://www.cnblogs.com/ytu2010dt/p/5959899.html 1.安装node环境 2.新建JS文件:nodeProxy.js 代码: "use strict"; const express = require('express'); const path = require('path'); const app = express(); const request = require('r

解决阿里云OSS跨域问题

解决阿里云OSS跨域问题 现象 本人项目中对阿里云图片请求进行了两次,第一次通过img标签进行,第二次通过异步加载获取.第一次请求到图片,浏览器会进行缓存,随后再进行异步请求,保存跨域失效. 错误信息如下: Failed to load http://cdn.imayuan.com/831ccd4741a7a56d85f6698a21f4ca69.svg: No 'Access-Control-Allow-Origin' header is present on the requested re

SpringBoot(十三)CORS方式实现跨域

什么是跨域?浏览器从一个域名的网页去请求另一个域名的资源时,域名.端口.协议任一不同,都是跨域 . 跨域资源访问是经常会遇到的场景,当一个资源从与该资源本身所在的服务器不同的域或端口请求一个资源时,资源便会发起一个跨域 HTTP 请求.出于安全考虑,浏览器会限制从脚本内发起的跨域HTTP请求. vCORS方式实现跨域 跨域的方式有很多种, 今天主要介绍CORS(网络通信技术),全称Cross-Origin Resource Sharing  ,是一种允许当前域(domain)的资源(比如html