跨域使用自定义请求头

耗尽温柔 提交于 2019-12-04 13:31:55

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;

 

 

然后在请求中正常的设置自定义请求头即可 

浏览器中显示

 

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!