您好,欢迎来到尔游网。
搜索
您的当前位置:首页记录空白字符(零宽空格)的坑-两个同样的URL,为什么其中一个会请求失败

记录空白字符(零宽空格)的坑-两个同样的URL,为什么其中一个会请求失败

来源:尔游网


前言

今天测接口,直接复制后端人员给的接口文档,结果不管怎么请求状态码都是400(服务器不理解我的请求语法,4开头的错一般都是前端请求的问题)。然后我直接重新一个字符一个字符的输入,你猜怎么着,成功了,状态码200。

原理

不过,为什么自己输入就可以,复制的就不行呢?

然后我打开了一个文本对比工具,将我复制的(图左)和输入的(图右)都放了进去

咋一看还以为是斜杠出了问题,其实并不是斜杠的问题

这是一个叫零宽空格的搞的鬼

如果去QQ输入框复制这个字符串,就能看到,中间其实是有东西的

用 JavaScript中 的 encodeURI("") 也可以发现这里面其实另有东西(这段代码的斜杠前面是有零宽空格的)

console.log(encodeURI("​/abcdefg​/hijklmn​/"));

下面是打印出来的结果,【%E2%80%8B】就是零宽空格

%E2%80%8B/abcdefg%E2%80%8B/hijklmn%E2%80%8B/

下列代码中间有零宽空格,你发现了吗

abcafdsljfsdnzq​w​e​r​t​h​n​b​c​d​f​g​h​j​k​,​m​h​g​i​h​l​k​,1234567

如何判断

那平时如何判断零宽空格呢,难道每次都得打开QQ复制字符串?

其实没那么麻烦,前文提到JavaScript的encodeURI可以打印零宽空白的

可以在浏览器按下【Ctrl+shift+J】打开控制台,然后输入 encodeURI("") ,双引号内放想判断问题的字符串,之后看打印的结果中有没有 【%E2%80%8B】 即可

应该不会有程序员debug的时候不开浏览器吧,不会吧不会吧

更方便的判断方法

我用Edge浏览器和Chrome浏览器的控制台,发现直接复制进去就能发现有零宽空白的地方都变成了点,都不需要看打印结果来判断了,真好。

其他相关文章

这里有两个对零宽空格的说明写得挺好

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- axer.cn 版权所有 湘ICP备2023022495号-12

违法及侵权请联系:TEL:199 18 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务