1.跨域
跨域是指请求协议,域名,端口三者存在某几个不同的时候就是跨域。
2.浏览器同源策略
同源策略限制了不同源之前的资源使用,比如cookie,请求头等。参考(https://www.cnblogs.com/laixiangran/p/9064769.html)
3.跨域共享cookie
cookie是从服务端下发到客户端(浏览器)的,服务端通过发送一个名为 Set-Cookie 的HTTP头来创建一个cookie,作为 Response Headers 的一部分。
通过 Set-Cookie 指定的可选项(域、路径、失效时间、secure标志)只会在「浏览器端」使用,它们都是服务器给浏览器的指示,以指定何时应该发送cookie。这些参数不会被发送至服务器端,只有name和value才会被发送。
客户端会根据这个响应头存储Cookie信息。再次请求服务器时,客户端会在请求信息中包含一个Cookie请求头,而服务器会根据这个请求头进行用户身份、状态等较验。
使用cors来解决跨域问题时需要以下步骤:
a.服务端设置响应消息头Access-Control-Allow-Credentials
值为“true”。
同时,还需要设置响应消息头Access-Control-Allow-Origin
值为指定单一域名(注:不能为通配符“*”)。
b.客户端需要设置Ajax请求属性withCredentials=true,让Ajax请求都带上Cookie。
4.跨域使用自定义请求头
a.服务端设置Access-Control-Expose-Headers (参考:https://developer.mozilla.org/zh-CN/docs/Web/HTTP/Headers/Access-Control-Expose-Headers)
服务端设置Access-Control-Allow-Headers的值包含‘Access-Control-Expose-Headers’,比如我自定义的请求头叫scdefinded:123456;
然后在请求中正常的设置自定义请求头即可
浏览器中显示