能设置或读取子域的cookie吗?

不行! 只能向当前域或者更高级域设置cookie
例如 client.com 不能向 a.client.com 设置cookie, 而 a.client.com 可以向 client.com 设置cookie
读取cookie情况同上

客户端设置cookie与服务端设置cookie有什么区别?

无论是客户端还是服务端, 都只能向自己的域或者更高级域设置cookie
例如 client.com 不能向 server.com 设置cookie, 同样 server.com 也不能向 client.com 设置cookie
服务端可以设置 httpOnly: true, 带有该属性的cookie客户端无法读取
客户端只会带上与请求同域的cookie, 例如 client.com/index.html 会带上 client.com 的cookie,
server.com/app.js 会带上 server.com 的cookie, 并且也会带上httpOnly的cookie
但是, 如果是向服务端的ajax请求, 则不会带上cookie, 详情见第三个问题

ajax请求到底会不会带上cookie?

默认情况下不会, 只有当设置了 credentials 时才会带上与请求同域的cookie, 并且服务端需要设置响应头 Access-Control-Allow-Credentials: true, 否则浏览器会报错, 拿不到响应

axios 默认情况下, 请求同域ajax会带上cookie, 跨域ajax不带cookie
使axios带上cookie
axios.get(‘http://server.com‘, {withCredentials: true})

samesite属性

https://www.ruanyifeng.com/blog/2019/09/cookie-samesite.html
总结:
当 samesite 为 strit 只有发起的请求和 当前页面的url一致才会携带cookie
当 samesite 为 lax 只有以下几种方式才会携带 cookie
image.png