看了个文章明白了
http://www.ruanyifeng.com/blog/2016/04/cors.html
文章中有说:
3.2:
需要注意的是,如果要发送Cookie,Access-Control-Allow-Origin就不能设为星号,必须指定明确的、与请求网页一致的域名。同时,Cookie依然遵循同源政策,只有用服务器域名设置的Cookie才会上传,其他域名的Cookie并不会上传,且(跨源)原网页代码中的document.cookie也无法读取服务器域名下的Cookie。
请注意
且(跨源)原网页代码中的document.cookie也无法读取服务器域名下的Cookie。
前台可读取的
headers:
"content-type": "application/json;charset=UTF-8"
haha: "woshikaikai"
响应头:
Accept
application/json, text/plain, */*
Accept-Encoding
gzip, deflate
Accept-Language
zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2
Connection
keep-alive
Content-Length
26
Content-Type
application/json;charset=utf-8
Cookie
token=eyJhbGciOiJIUzI1NiJ9.eyJ…XiYBLEsjAAo4zUv3vhDPLckUcVfIY
Host
192.168.1.107:8088
Origin
http://127.0.0.1:8080
Referer
http://127.0.0.1:8080/login
User-Agent
Mozilla/5.0 (Windows NT 10.0; …) Gecko/20100101 Firefox/62.0
后端服务器设置:
Configuration
public class CorsConfig implements WebMvcConfigurer {
@Override
public void addCorsMappings(CorsRegistry registry) {
//设置允许跨域的路径
registry.addMapping("/**")
//设置允许跨域请求的域名
.allowedOrigins("http://127.0.0.1:8080")
//是否允许证书 不再默认开启
.allowCredentials(true)
//设置允许的方法
.allowedMethods("*")
.allowedHeaders("*")
.exposedHeaders(HttpHeaders.SET_COOKIE, "haha")
//跨域允许时间
.maxAge(3600);
}
}
但是即使后台设置了
.exposedHeaders(HttpHeaders.SET_COOKIE)
前台也是无法获取cookie的
问题描述
我也看了很多跨域文章
总的就是说
后台
这两个配置一下
.allowedOrigins("http://g3.zk1.local.csljc.com:8083")
//是否允许证书 不再默认开启
.allowCredentials(true)
//给请求的返回内容中写入cookie
public static void writeCookie(HttpServletResponse response, String cookieName, String value) {
Cookie cookie = new Cookie(cookieName, value);
cookie.setPath("/");
cookie.setMaxAge(3000 * 60);
cookie.setDomain("g3.zk1.local.csljc.com");
response.addCookie(cookie);
}
前台:
const axios = Axios.create({
baseURL: 'http://192.168.51.194:8021', // api的base_url
withCredentials: true,
timeout: 30000 // request timeout
})
访问前台项目地址为
http://g3.zk1.local.csljc.com:8083
后台api接口地址为:
192.168.51.194:8021
我看网上人家都说这么配置就行了,为啥我这里不行啊