<code>package com.example.test.demo;
import org.apache.commons.lang.StringUtils;
import javax.servlet.*;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
/**
* @Description 用於解決跨域問題
**/
public class AllowOriginFilter implements Filter {
@Override
public void init(FilterConfig filterConfig) throws ServletException {
// TODO 其他處理
}
@Override
public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
HttpServletResponse response = (HttpServletResponse) servletResponse;
HttpServletRequest request = (HttpServletRequest) servletRequest;
String origin = request.getHeader("Origin");
if (StringUtils.isNotBlank(origin)) {
//設置響應頭,允許跨域訪問
//帶cookie請求時,必須為全匹配,不能使用*
/**
* 表示允許 origin 發起跨域請求。
*/
response.addHeader("Access-Control-Allow-Origin", origin);
}
/**
* GET,POST,OPTIONS,PUT,DELETE 表示允許跨域請求的方法
*/
response.addHeader("Access-Control-Allow-Methods", "GET, POST, OPTIONS, PUT, DELETE");
/**
* 表示在86400秒內不需要再發送預校驗請求
*/
response.addHeader("Access-Control-Max-Age", "86400");
//支持所有自定義頭
String headers = request.getHeader("Access-Control-Request-Headers");
if (StringUtils.isNotBlank(headers)) {
//允許JSON請求,並進行預檢命令緩存
response.addHeader("Access-Control-Allow-Headers", headers);
}
response.addHeader("Access-Control-Max-Age", "3600");
//允許cookie
response.addHeader("Access-Control-Allow-Credentials", "true");
filterChain.doFilter(servletRequest, response);
}
@Override
public void destroy() {
// TODO 其他處理
}
}
/<code>
<code> @CrossOrigin
@RequestMapping(value = "/login",method = RequestMethod.POST)
public String Hell( String name, String pwd){
return "請求成功";
}/<code>
引用commons-lang
<code> <dependency>
<groupid>commons-lang/<groupid>
<artifactid>commons-lang/<artifactid>
<version>2.6/<version>
/<dependency>/<code>
閱讀更多 老程的自習社 的文章