遇到跨域问题,记录下了解决跨域的方法。
后台跨域代码
看看这个注解
@Order(Integer.MIN_VALUE)
因为没有加上这个注解,虽然登录了服务器,但后来请求头设置的“Authorization”的值却始终在后台获取为空。这个注解作用是设置优先级最高,在路由之前生效。
import org.springframework.context.annotation.Configuration;
import org.springframework.core.annotation.Order;
import org.springframework.http.HttpMethod;
import javax.servlet.*;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
@Configuration
@Order(Integer.MIN_VALUE)
public class CrossFilter implements Filter {
@Override
public void doFilter(ServletRequest request1, ServletResponse response1, FilterChain chain)
throws IOException, ServletException {
HttpServletRequest request = (HttpServletRequest) request1;
HttpServletResponse response = (HttpServletResponse) response1;
response.setHeader("Access-Control-Allow-Origin", request.getHeader("Origin"));
response.setHeader("Access-Control-Allow-Credentials", "true");
response.setHeader("Access-Control-Allow-Headers", "Authorization, content-type, token, myauth, myAuth,userId , userid,RefreshToken");
response.setHeader("Access-Control-Allow-Methods", "POST,GET,OPTIONS");
response.setHeader("Access-Control-Expose-Headers", "X-forwared-port, X-forwarded-host,Content-Disposition");
response.setHeader("Vary", "Origin,Access-Control-Request-Method,Access-Control-Request-Headers");
if (!request.getMethod().equals(HttpMethod.OPTIONS.name())) {
chain.doFilter(request, response);
}
}
}
如果还获取不到请求头设的值 ('Authorization’或什么),再加下面那段试试。
response.addHeader(“Access-Control-Expose-Headers”,“Authorization”);