美文网首页
记录用vue开发公众号遇到的http预请求,以及避免预请求的办法

记录用vue开发公众号遇到的http预请求,以及避免预请求的办法

作者: 大号火龙果 | 来源:发表于2020-03-12 00:19 被阅读0次

起因:

开发一款购物类商城app,它里边有一个砍价的功能,这个功能依靠app分享到微信端的特性,从而需要一个公众号的h5页面,这个页面我为了快速开发就使用cdn引入了 vue;

原理:

使用app分享功能,带上当前要砍价的商品的缩略图,标题,以及商品链接。生成一个分享出去的卡片;然后将这个链接在微信端打开,注意打开这个链接怎么构成的呢,提供一下我的个人思路,和我们团队的做法:在打开微信之前向服务器发起请求,拿到我们的微信公众号的砍价页面的地址,再拼接上我们砍价商品的id,在微信上打开我们的h5页面h5页面通过window.href截取到我们的商品id,再拿我们截取到的id去发起请求拿到商品的详细。问题:向微信服务器换取openid的时候我们的axios会先发送一个OPINTIO的预请求,这个预请求是为什么会发起的呢??因为我们的axios是基于http请求和promise上二次封装的,http请求会针对我们的请求头和携带参数去判断我们的请求是不是 ' 非简单请求 ' ,来发起预请求的。而微信的服务器在判断我们连续向他发送两次请求的时候,认定我们是恶意请求,所以我们不得不避免这个预请求!!注意!!!!这里就涉及到了我们今天要讨论的怎么阻止我们的http请求去向服务器发起预请求了!!!

解决办法:

简单的说,避免发起预请求的办法就是,尽可能的将我们的请求都变成简单请求!!

第一步:改变我们的请求头。

我们原来的写法:

Content-Type: application/json : 请求体中的数据会以json字符串的形式发送到后端

这种请求头,直接就将请求变作了非简单请求了(具体区分办法请搜索:阮一峰 cors);
改变后的写法:

Content-Type: application/x-www-form-urlencoded:请求体中的数据会以普通表单形式(键值对)发送到后端
Content-Type: multipart/form-data: 它会将请求体的数据处理为一条消息,以标签为单元,用分隔符分开,既可以上传键值对,也可以上传文件。

第二步:改变我们携带参数的方法

1、可以使用qs序列化传参。

2、可以使用我们的formdata传参;
使用qs我就不多加赘述了,直接说一下用formdata这个办法:

 //新建一个formdata对象
var form=new formData();
//将我们的参数添加进去
form.append('key',value)
//再将我们的form对象当成参数传给后端就好了

完,多谢观看,互相学习

相关文章

  • 记录用vue开发公众号遇到的http预请求,以及避免预请求的办法

    起因: 开发一款购物类商城app,它里边有一个砍价的功能,这个功能依靠app分享到微信端的特性,从而需要一个公众号...

  • 3-3 CORS跨域限制以及预请求验证

    1、请求的时候增加请求头 2、预请求 查看预请求限制的文档: 3、预请求显示Header的demo 设置允许的请求...

  • Postman中文文档——预请求脚本(Pre-request s

    预请求脚本 预请求脚本是与发送请求之前执行的集合请求相关联的代码片段。这对于例如在请求头中包含时间戳或在URL参数...

  • 04、预请求脚本

    预请求脚本 预请求脚本是与在发送请求之前执行的收集请求相关联的代码片段。这非常适合用例,例如在请求标头中包含时间戳...

  • 预检请求

    问题:每次发起请求,同一条url有两条请求第一条请求Method是OPTIONS请求,第二条请求Method才是实...

  • options预请求

    最近开发过程中,为了避免跨域,于是在服务端添加了Access-Control-Allow-Origin,前端出现一...

  • 非简单跨越请求

    当浏览器发现请求是跨越的时候,会先进行预检请求,之后才会进行第二次请求来获取数据。 1. 预检"请求用的请求方法是...

  • 关于post请求无法传递headers的token,而get可以

    关于预请求的发送: 之前一直报“签名验证不通过”,如下图,可以看到只有一个请求,并非预请求 说明这是一个简单请求,...

  • http协议篇

    cors预请求(跨域的时候回出现预请求的验证 ) 允许的方法有 GET HEAD POST 允许的Content-...

  • AJAX出现两次请求 options和get|post

    跨域请求 允许跨域请求 preflighted request预请求(options) 跨域请求 XMLHttpR...

网友评论

      本文标题:记录用vue开发公众号遇到的http预请求,以及避免预请求的办法

      本文链接:https://www.haomeiwen.com/subject/xhbkjhtx.html