文章插图
观察到响应头中多了一行内容:
Access-Control-Allow-Origin:http://127.0.0.1:8009 字段,再看看响应内容,确实有消息返回了,内容如下:
文章插图
- 只验证了Origin和Access-Control-Allow-Origin中内容响应,若内容不同又会有什么现象呢?
服务端代码进一步修改
app.get('/', (req, res) => {console.log('get请求收到了!!!');res.setHeader('Access-Control-Allow-Origin', 'http://127.0.0.1:8008');res.send('get请求已经被处理');})
响应头内容
文章插图
此时浏览器控制台报错了,出现了跨域问题
文章插图
通过该实验可以验证通过配置2.3 实验三
Access-Control-Allow-Origin字段可以解决跨域问题;此外,浏览器是通过检查响应头中Access-Control-Allow-Origin字段的值与Origin的值是否相等来确定是否允许跨域访问的 。通过该实验达到了我们实验的目的 。
实验目的 验证CORS请求默认不发送Cookie信息,如果要把Cookie发送到服务器,一方面要服务器同意(通过指定
Access-Control-Allow-Origin字段且Access-Control-Allow-Origin需要指定具体域名);另一方面浏览器请求中必须带上withCredentials字段 。
- 通过观察请求头(看实验一中请求头),并不包含Cookie信息
- 代码修改
index.html页面进行修改
axios('http://127.0.0.1:8010', {method: 'get',withCredentials: true}).then(console.log)
服务器端代码修改
app.get('/', (req, res) => {console.log('get请求收到了!!!');console.log('cookie 内容为', req.headers.cookie);res.setHeader('Access-Control-Allow-Origin', 'http://127.0.0.1:8009');res.setHeader('Access-Control-Allow-Credentials', true);res.cookie('test', 'test', {expires: new Date(Date.now() + 900000)});res.send('get请求已经被处理');})
- 再次观察请求头内容,带上了cookie
文章插图
- 看看服务器端有没有接收到cookie信息,控制台信息如下,确实收到了cookie信息
文章插图
按照上述进行配置发送请求过程中将会带着cookie信息,上一个配置将会报错(可以自行验证)2.4 实验四
实验目的
验证非简单请求会增加一次预检请求
预检请求是Options请求
请求头中会携带非简单请求的请求方法(
Access-Control-Request-Methods)和头信息(Access-Control-Request-Headers),预检请求的响应头信息中Access-Control-Allow-Methods和Access-Control-Allow-Headers与上述请求头中的信息匹配才可以发送正常的CORS请求 。
- 第一步肯定是要修改代码了
index.html代码
axios('http://127.0.0.1:8010', {method: 'post',headers: {'Content-Type': 'application/json'},data: {name: 'dog'}}).then(console.log)
服务器代码修改如下
app.options('/', (req, res) => {console.log('options请求收到了!!!');res.setHeader('Access-Control-Allow-Origin', '*');res.setHeader('Access-Control-Allow-Headers', 'Content-Type');res.setHeader('Access-Control-Max-Age', 10000);res.send('options请求已经被处理');});app.post('/', (req, res) => {console.log('post请求收到了!!!');res.setHeader('Access-Control-Allow-Origin', '*');res.send('post请求已经被处理');});
- 修改完了代码是不是要瞅瞅结果呢?
【理论与实践相结合彻底理解CORS】先看看浏览器是不是输出了内容,确实有内容输出了
文章插图
再瞅瞅服务器输出了些什么内容
推荐阅读
- 韭菜子与杜仲功效,杜仲的功效杜仲主治功效与作用
- 喝雪菊茶的功效与禁忌,雪菊的功效与作用吃法
- 千日红禁忌,千日红的功效与作用及禁忌
- 合欢花与合欢米样吗,合欢米的功效与作用
- 银杏茶的功效与作用坏处,黄精银杏茶的功效与作用这几个作用你知道吗
- 四妙散的功效与作用是什么,普洱茶的功效与作用是什么
- 金盏花性味归经,人参泡水功效与作用有哪些
- 香薷佩兰茶的功效与作用,佩兰的功效与作用有
- 紫芽的功效和作用,小青柑白茶的功效与作用
- 人参乌龙茶的功效与作用,花旗参泡水喝的功效与作用