跨域问题及解决方法

2018-08-22  本文已影响3人  千反田爱瑠爱好者

前端调用不同域的后端接口,满足三个条件即产生跨域问题:

一些要点:

解决思路

@ControllerAdvice
public class JsonpAdvice extends AbstractJsonpResponseBodyAdvice{
    public JsonpAdvice() {
        super("callback");
    }
}

// 存在问题:服务器需要改动代码、只支持GET方法、发送的请求非XHR请求。
filter
    Access-Control-Allow-Origin
    Access-Control-Allow-Methods
    Access-Control-Allow-Headers

简单请求

带Cookie的跨域请求

带(被调用方的)Cookie时Access-Control-Allow-Origin必须与当前域完全匹配,不能使用*(服务端可在请求头的Origin中获取、设置到响应头Access-Control-Allow-Origi中),且带上Access-Control-Allow-Credentials=true。

带自定义头的跨域请求

从请求头获取Access-Control-Request-Headers,设置到响应头Access-Control-Allow-Headers中。

解决方法总结

从被调用方解决

从调用方解决

NginX、Apache配置反向代理(对客户端透明)

上一篇 下一篇

猜你喜欢

热点阅读