Cors实现java后端完全跨域实例
作者:lifereader 时间:2022-01-04 15:03:33
https://www.jb51.net/article/114838.htm这篇文章很详细的介绍了JS的跨域,给出的解决方案是springboot的方式,假如不用spring boot 或者 spring版本低于4.2就需要自己实现;
参考了spring boot的实现方式,并有所简化,代码如下:
package com.lvluo.web.filter.CorsFilter;
import java.io.IOException;
import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.springframework.http.HttpHeaders;
public class CorsFilter implements Filter {
public static final String ACCESS_CONTROL_REQUEST_METHOD = "Access-Control-Request-Method";
public static final String OPTIONS = "OPTIONS";
public void doFilter(ServletRequest request, ServletResponse response,
FilterChain chain) throws IOException, ServletException {
HttpServletRequest httpRequest = (HttpServletRequest) request;
HttpServletResponse httpResponse = (HttpServletResponse) response;
if (isCorsRequest(httpRequest)) {
httpResponse.setHeader("Access-Control-Allow-Origin", "*");
httpResponse.setHeader("Access-Control-Allow-Methods",
"POST, GET, PUT, DELETE");
httpResponse.setHeader("Access-Control-Allow-Credentials", "true");
// response.setIntHeader("Access-Control-Max-Age", 1728000);
httpResponse
.setHeader(
"Access-Control-Allow-Headers",
"Origin, X-Requested-With, Content-Type, Accept, Accept-Encoding, Authorization");
if (isPreFlightRequest(httpRequest)) {
return;
}
}
chain.doFilter(request, response);
}
public void init(FilterConfig filterConfig) {
}
public void destroy() {
}
public boolean isCorsRequest(HttpServletRequest request) {
return (request.getHeader(HttpHeaders.ORIGIN) != null);
}
/**
* Returns {@code true} if the request is a valid CORS pre-flight one.
*/
public boolean isPreFlightRequest(HttpServletRequest request) {
return (isCorsRequest(request) && OPTIONS.equals(request.getMethod()) && request
.getHeader(ACCESS_CONTROL_REQUEST_METHOD) != null);
}
}
接着在web.xml配置filter即可
<filter>
<filter-name>corsFilter</filter-name>
<filter-class>com.lvluo.web.filter.CorsFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>corsFilter</filter-name>
<url-pattern>/api/*</url-pattern>
</filter-mapping>
前端测试的JS代码,其中客户端的
$.ajax({
headers : {
'Authorization' :'Bearer iBoxSO9QdrHR0'
},
url: 'http://localhost:8080/service/api/ping',
type: 'GET',
dataType: 'json',
success : function(result){
$("#result").html(result.code);
}
})
来源:https://my.oschina.net/lifereader/blog/909524
标签:java,后端,跨域
![](/images/zang.png)
![](/images/jiucuo.png)
猜你喜欢
JavaCV实现读取视频信息及自动截取封面图详解
2022-05-20 14:43:05
![](https://img.aspxhome.com/file/2023/7/66177_0s.jpg)
C#仪器数据文件解析Excel文件的方法浅析(xls、xlsx)
2023-09-18 01:40:57
Java正确使用访问修饰符的姿势
2021-10-11 09:52:50
![](https://img.aspxhome.com/file/2023/5/76595_0s.png)
SpringDataMongoDB多文档事务的实现
2023-11-25 06:37:55
java substring 截取字符串的方法
2023-02-12 17:21:19
Java中RedisUtils工具类的使用
2022-05-04 21:32:32
IDEA导出jar打包成exe应用程序的小结
2023-06-22 04:02:46
![](https://img.aspxhome.com/file/2023/2/71192_0s.png)
Java多态的全面系统解析
2023-06-22 13:39:22
![](https://img.aspxhome.com/file/2023/9/77119_0s.png)
SpringBoot2整合Drools规则引擎及案例详解
2021-12-30 05:57:10
![](https://img.aspxhome.com/file/2023/3/66703_0s.jpg)
SparkSQl简介及运行原理
2023-09-17 05:18:19
![](https://img.aspxhome.com/file/2023/9/58579_0s.jpg)
Spring自动配置之condition条件判断上篇
2022-07-01 17:34:51
![](https://img.aspxhome.com/file/2023/5/62055_0s.png)
Mybatis 缓存原理及失效情况解析
2022-12-04 07:28:43
![](https://img.aspxhome.com/file/2023/6/82996_0s.jpg)
C#异步编程Task的创建方式
2023-07-23 06:22:43
![](https://img.aspxhome.com/file/2023/1/66591_0s.png)
Java中Maven项目导出jar包配置的示例代码
2023-01-26 20:09:32
C#中ToString数据类型格式大全(千分符)
2023-10-03 05:08:48
Java使用synchronized实现互斥锁功能示例
2022-10-20 00:47:49
Spring Boot 集成MyBatis 教程详解
2021-10-12 04:49:21
![](https://img.aspxhome.com/file/2023/4/64114_0s.jpg)
Java日常练习题,每天进步一点点(8)
2022-04-15 16:40:26
![](https://img.aspxhome.com/file/2023/9/61879_0s.jpg)
详解SpringCloud服务认证(JWT)
2023-11-14 11:19:43
![](https://img.aspxhome.com/file/2023/6/70916_0s.png)
Java与kotlin详细对比
2022-04-13 23:26:47