java后端解决跨域问题(过滤器或者注解)

news/2024/12/12 5:49:00/

1。允许整个项目跨域访问,可通过filter来进行过虑,在文件夹下创建一个名叫: web过滤器的java类:

文件位置及文件名:\src\main\java\pm.lms\WebConfig\SimpleCORSFilter.java 注意这两个文件可以放在src\main\java下的任意一个子文件夹中,可以自己定义,使用注解方式的话,系统会自己查找带有@Configuration的文件在配置文件web.xml中进行注册。无需手工操作web.xml文件,但是如果你的项目不是springBoot框架的话,你就要采用原来的方式在web.xml中进行手工注册。

public class SimpleCORSFilter implements Filter{  @Override  public void destroy() {  }  @Override  public void doFilter(ServletRequest req, ServletResponse res,  FilterChain chain) throws IOException, ServletException {  HttpServletResponse response = (HttpServletResponse) res;  response.setHeader("Access-Control-Allow-Origin", "*");  response.setHeader("Access-Control-Allow-Methods", "POST, GET, OPTIONS, DELETE");  response.setHeader("Access-Control-Max-Age", "3600");  response.setHeader("Access-Control-Allow-Headers", "x-requested-with");  chain.doFilter(req, res);  }  @Override  public void init(FilterConfig arg0) throws ServletException {  }  }

在web.xml中需要添加如下配置

1)第一种方法:手工设置web.xml

<filter>  <filter-name>cors</filter-name>  <filter-class>com.ssm.web.filter.SimpleCORSFilter</filter-class>  </filter>  <filter-mapping>  <filter-name>cors</filter-name>  <url-pattern>/*</url-pattern>  </filter-mapping>
</filter>

2)第二种方法:springBoot注解的方法,采用java类的方式直接操作web.xml文件,注意:springBoot不采用手工配置web.xml

文件位置及文件名:\src\main\java\pm.lms\WebConfig\WebConfig.java

package pm.lms.WebConfig;
import org.springframework.boot.web.servlet.FilterRegistrationBean;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;@Configuration
public class WebConfig {@Beanpublic FilterRegistrationBean<SimpleCORSFilter> filterRegistrationBean() {FilterRegistrationBean<SimpleCORSFilter> filterRegistrationBean = new FilterRegistrationBean<>();filterRegistrationBean.setFilter(new SimpleCORSFilter());filterRegistrationBean.addUrlPatterns("/*");return filterRegistrationBean;}
}

2。为单个方法提供跨域访问,直接添加请求头:

response.setHeader(“Access-Control-Allow-Origin”, “*”);
response.setHeader(“Access-Control-Allow-Methods”, “POST, GET, OPTIONS, DELETE”);
response.setHeader(“Access-Control-Max-Age”, “3600”);
response.setHeader(“Access-Control-Allow-Headers”, “x-requested-with”);
后端(springboot)解决跨域问题
首先我门要知道什么是跨域:
跨域是指 不同域名之间相互访问。跨域,指的是浏览器不能执行其他网站的脚本。它是由浏览器的同源策略造成的,是浏览器对JavaScript施加的安全限制。

也就是如果在A网站中,我们希望使用Ajax来获得B网站中的特定内容
如果A网站与B网站不在同一个域中,那么就出现了跨域访问问题。

什么是同一个域?
同一协议,同一ip,同一端口,三同中有一不同就产生了跨域。

前端解决跨域:
前边也说了,跨域是浏览器不能执行其他网站的脚本。它是由浏览器的同源策略造成的,是浏览器对JavaScript施加的安全限制。
解决:
所以搞一个node 服务器做代理,发出请求到node 服务器,node服务器转发到后端就可以绕过跨域问题。

后端解决跨域问题:
后端解决就比较简单了。例如我用的springboot,只用在Controller类上添加一个“@CrossOrigin“注解就可以实现对当前controller 的跨域 访问了,当然这个标签也可以加到方法上。

@RequestMapping(value = "/users")
@RestController
@CrossOrigin
public class UserController {@Autowiredprivate UserService userService;@RequestMapping(method = RequestMethod.POST)@CrossOriginpublic User create(@RequestBody @Validated User user) {return userService.create(user);}
}

学习收藏
转载自:https://blog.csdn.net/weixin_41796956/article/details/84133901?spm=1001.2101.3001.6650.1&utm_medium=distribute.pc_relevant.none-task-blog-2%7Edefault%7EBlogCommendFromBaidu%7ERate-1-84133901-blog-128429843.235%5Ev38%5Epc_relevant_sort&depth_1-utm_source=distribute.pc_relevant.none-task-blog-2%7Edefault%7EBlogCommendFromBaidu%7ERate-1-84133901-blog-128429843.235%5Ev38%5Epc_relevant_sort&utm_relevant_index=2


http://www.ppmy.cn/news/883507.html

相关文章

C++ IO流

文章目录 C语言的输入与输出流是什么?CIO流C标准IO流C文件流 stringstream的简单介绍 C语言的输入与输出 在C语言中,我们使用最频繁的输入输出方式为: scanf 和 printf. scanf : 从输入设备(键盘)读取数据,并将值存放在变量中.printf: 将指定的文字/字符串输出到标准输出设备…

数字Flash时钟

网上找的&#xff0c;从几百个里挑出来的数字形式的时钟。 . http://files.cnblogs.com/jetz/digitclock.rar

html设置播放器位置,【关于Flash网页播放器的定位与浮动的HTML代码】

代码说明&#xff1a;autoStartfalse或true(是否自动播放"false"是手动播放;"true"是自动播放)repeatPlaytrue或false(是否循环播放"false"是播放一遍;"true"是循环播放)width25 (这是播放器的宽度最小设定"25"下面那个大些…

关于Adobe flash player 本地播放器

发现Adobe flash player几番升级哦&#xff0c;下载到电脑上的都是打开网页用的插件版&#xff0c;还是无法本地的swf格式文件&#xff01;而又讨厌用QQ影音之流来播放swf文件&#xff01; 苦寻本地版的flash player良久&#xff0c;终于在Adobe找到了这个页面 http://www.ad…

带有波形图的flash音乐播放器

最近项目里需要这么一个东西&#xff0c;但是找遍了网上也没有合适的带波形图的播放器。 曾经找到过非常接近的解决方案&#xff0c;最后都不能用&#xff1a; media player&#xff0c;如果机器安装了高版本的media player是可以显示波形图的&#xff0c;优点是客户端一般不需…

flash 播放控制代码

<HTML><HEAD> <meta http-equiv"Content-Type" content"text/html; charsetgb2312"> <title>Flash播放</title><script >var movie,timer,step,total,statenull,delay100 function init(){ moviewindow.document.mov…

swf 格式Flash 动画播放器在Android上的实现

首先明确一点&#xff0c;swf格式和其他的一些视频格式有很大的区别。 它里面不仅有音频还有其他的各种元素(术语叫块类型)包括但不仅限于&#xff1a; 矢量图、图片、文字、字体、片段动画、按钮、帧、动作、音频等等 你需要将这些元素一一解析并渲染出来。 这种格式是允许…

数码管循环播放数字

目录 前言 一&#xff0c;设计思想 二&#xff0c;模块代码 三&#xff0c;引脚分配 四.运行效果 前言 FPGA小白&#xff0c;第一次写文章&#xff0c;记录自己写的关于数码管循环播放滚动数字实验的一点想法和成品&#xff0c;分享出来&#xff0c;一起开发新方法。 一&…