2020-7-16 Java实现CORS跨域访问

什么是跨域访问:

跨域访问问题出现是由于浏览器的同源策略,同源策略指的是请求的url地址,必须与浏览器上的url地址处于同域上,也就是域名,端口,协议相同。

 

解决跨域访问问题有两种方式:

1、可以在方法上添加注解

@CrossOrigin

此方法就可以被跨域访问,但是这样只能放开一个方法

 

2、设置拦截器,在response头信息中添加"Access-Control-Allow-Origin"

import org.springframework.web.servlet.handler.HandlerInterceptorAdapter;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

//跨域访问
public class CrossAccess extends HandlerInterceptorAdapter {

    @Override
    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {

        //获取请求
        String origin = request.getHeader("Origin");
        //允许
        response.setHeader("Access-Control-Allow-Origin", origin);
        return super.preHandle(request, response, handler);

    }
}

然后需要在springmvc核心配置文件中配置拦截器

    
    

        
            
            
        

    


    
    

响应头

  • Access-Control-Allow-Methods
    用来列出浏览器的CORS请求允许使用的HTTP方法,如:GET、POST、PUT、DELETE、OPTIONS

  • Access-Control-Allow-Credentials
    表示是否支持跨域Cookie

  • Access-Control-Allow-Headers
    逗号分隔的字符串,表示服务器支持的所有头信息字段,如Content-Type以及自定义的字段

  • Access-Control-Expose-Headers
    与“Access-Control-Allow-Headers”相反,表示不支持的头信息字段

  • Access-Control-Allow-Origin
    允许跨域的请求源信息,包括协议、域名、端口,为*表示允许所有请求来源,并且只能设置一个请求源

你可能感兴趣的:(Web应用程序)