前端同事访问自己本地的应用 指定了hosts 如
127.0.0.1 my.foo.com
然后访问 my.foo.com
但是在页面上通过ajax调用后端的接口 如调用我机器上的接口
$.ajax({
type: "post",
url: 'http://192.169.0.204:8080/bar/search',
contentType : "application/json;charset=utf-8",
dataType: "json",
...
因为服务端需要获取cookie信息 而这又是跨域调用 默认不带cookie 需要显式设置
client端必须手动设置xhr.withCredentials=true
server端也必须允许request能携带认证信息(即response header中包含Access-Control-Allow-Credentials:true)
server端一定不能将Access-Control-Allow-Origin设置为*,而必须设置为请求页面的域名。
参考: https://segmentfault.com/a/11...
前端和服务端都按上述要求设置了 但是服务端还是接收不到cookie
最后前端同事将我的IP地址也改成hosts 才终于成功了
127.0.0.1 my.foo.com
192.168.0.204 back.foo.com
ajax请求中的地址改成
url: 'http://back.foo.com:8080/bar/search'
我有点不解 都按要求配置了 为什么非得使用hosts呢?用IP为什么就不行呢?
因为跨域的域指的和页面的域不同,如果页面使用IP,ajax也使用相同的IP,就不会跨域了