美文网首页
Java之spring解决跨域问题

Java之spring解决跨域问题

作者: 进击的奥莉 | 来源:发表于2020-06-08 14:44 被阅读0次

学习Java已经有一段时间了,今天和前端小姑娘一起联调接口,没想到第一个问题就是跨域问题.

赶紧上网查资料,很多解决办法,但是讲的都不是很清晰,整理了一下,希望能帮助更多的人.

1,怎么样才是跨域问题报错?

一般浏览器报如下错误基本上就是跨域问题了

XMLHttpRequest cannot load xxx. Request header field Authorization is not allowed by Access-Control-Allow-Headers in preflight response.

2,今天说一下服务器端Java的解决办法

添加一个工具类-过滤器.在你的开发包下面新增目录common,并右键-new-Java Class,新建CorsFilter类

在CorsFilter中添加如下代码:

package com.lmei.ssm.common;

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.stereotype.Component;

/**

* 允许跨域过滤器(Cross-Origin Resource Sharing)

* @author user

*

*/

@Component

public class CorsFilterimplements Filter {

    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-Credentials","true");

        response.setHeader("Access-Control-Allow-Methods","*");

        response.setHeader("Access-Control-Max-Age","3600");

        //        response.setHeader("Access-Control-Allow-Headers", "*");

        response.setHeader("Access-Control-Allow-Headers","Authorization,Origin,X-Requested-With,Content-Type,Accept,"

                +"content-Type,origin,x-requested-with,content-type,accept,authorization,token,id,X-Custom-Header,X-Cookie,Connection,User-Agent,Cookie,*");

        response.setHeader("Access-Control-Request-Headers","Authorization,Origin, X-Requested-With,content-Type,Accept");

        response.setHeader("Access-Control-Expose-Headers","*");

        chain.doFilter(req, response);

    }

    public void init(FilterConfig filterConfig) {}

    public void destroy() {}

}

并在web.xml中添加过滤

<filter>

<filter-name>corsFilter</filter-name>

<filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class>

</filter>

<filter-mapping>

<filter-name>corsFilter</filter-name>

<url-pattern>/*</url-pattern>

</filter-mapping>

如果你想自定义设置某个目录下进行跨域过滤,可以将/*修改为 /book/*.

或者复制<filter-mapping>再写一个map.

重启项目,跨域问题就完美解决了.

参考地址:https://www.cnblogs.com/poterliu/p/11339942.html

相关文章

网友评论

      本文标题:Java之spring解决跨域问题

      本文链接:https://www.haomeiwen.com/subject/wgfrtktx.html