req.query 获取查询参数,在IE中出现乱码?
描述:http://192.168.0.20:30001/notes?search=小程序 从某一个链接跳转到这个查询链接,直接用req.query.search 获取参数 在其他浏览器都可以,就是在IE中 获取的req.query.search 是一个乱码
ie高级设置里面有个选型 大致是 始终以utf-8 发送请求。你试试切换下看是否于此相关
设置了 还是一样的
所以url一般都需要urlencode处理啊
看起来像IE特有问题,定位一下服务器接收到的具体内容,再对症下药,req.query参数理论上是从原始http.IncomingMessage
上解析url得到的,所以用下面的代码测试一下具体接收内容:
const http = require('http');
let server = http.createServer((req, res) => {
console.log(req.url);
res.end('hello');
});
server.listen(10000);
跑起来后,在浏览器中访问http://localhost:10000/?search=小程序,正常情况应该打印:/?search=%E5%B0%8F%E7%A8%8B%E5%BA%8F
然后观察IE打印内容…
// 如果对所使用的框架熟悉,可以在req上取原始url并打印
@Shasharoman 嗯嗯 我试试 直接过去全url然后在进行切割参数 自豪地采用 CNodeJS ionic
推荐你看一下这篇文章,能对编码和querystring,有更深的理解各种编码格式(非常经典)
前段时间公司比较忙,所以问题搁置了 毕竟是自己的项目 做的时候也没那么着急
问题已经解决了 前端搜索的时候 用 encodeURI(‘搜索的值’) 编码一下 node后端正常 req.query.search 就可以了 不需要解码 这样在ie中也可以了