`

获取签名接口,url含有中文,invalid signature

    博客分类:
  • vue
阅读更多
签名有效条件: 后台调用微信接口获取票据的URL 和当前 浏览器的URL 一致。
即:
  自己后台签名接口获得的URL===浏览器的URL

以上等式如果有中文,不成立的原因分点说:
1.服务器数据集非UTF-8。
=>后台得到的是乱码 --> 只能是前端编码两次,后端UTF8解码一次。解决!

2.服务器数据集是UTF-8。
2.1 URL包含0或1个参数
=>完全正常--> 前端无需编码,后端也无需解码。
2.2 URL含有多个参数
=>微信浏览器会将URL后面的参数给拆散,破坏了URL
-->前端一次编码,后端不要解码。(这里,服务器自己已解码,再解码会将浏览器对中文的编码解码成中文,导致URL不一致,签名无效)
-->当然,如果前端两次编码,那么后端就需要解码一次

-------------------------------------------------
综上,关键在于服务器编码,和微信浏览器 两个原因。
同时解决掉这两者的方法就是:
  前端两次编码,后端一次解码
分享到:
评论

相关推荐

    微信js sdk invalid signature签名错误问题的解决方法分析

    但是,在实际开发过程中,开发者可能会遇到"invalid signature"的签名错误问题。这一问题表明了生成的签名与微信服务器的签名验证结果不一致,导致接口调用失败。 解决"invalid signature"签名错误问题,首先需要...

    微信分享invalid signature签名错误踩过的坑

    确保动态获取签名URL 在html静态页面中,前端需要通过ajax将当前页面的url传到后端进行签名。因为页面一旦被分享,微信客户端会向url添加额外的参数,如果使用的是静态页面并且url不是动态获取的,那么这将导致...

    vue.js中使用微信扫一扫解决invalid signature问题(完美解决)

    然而,在实际开发过程中,可能会遇到“invalid signature”错误,这通常是因为签名生成不正确导致的。以下将详细介绍如何在Vue.js中使用微信扫一扫并解决invalid signature问题。 首先,我们需要在Vue组件中添加一...

    springboot实现接口签名

    首先,接口签名的基本原理是通过一种约定好的方式,如哈希算法,将请求的特定信息(如URL、参数、时间戳等)和一个私有密钥结合,生成一个唯一的签名字符串。接收方接收到请求后,同样使用同样的算法和密钥对请求...

    详解IOS微信上Vue单页面应用JSSDK签名失败解决方案

    但在使用微信JSSDK的相关API(如扫码、分享等)时,发现总是在使用当前页面的URL时会出现签名错误(invalidsignature),从而导致API调用失败。 问题的出现是由于iOS微信客户端仅能使用第一次进入应用时的URL进行...

    javascript获取wx.config内部字段解决微信分享

    为了将PHP代码从前端HTML中分离出来,通常会将获取签名包的PHP代码写成一个接口,然后通过AJAX在前端调用该接口来获取必要的参数。这些参数包括appId(应用ID)、timestamp(时间戳)、nonceStr(随机字符串)和...

    Laravel开发-payfast

    return response()->json(['status' => 'error', 'message' => 'Invalid IPN signature']); } // 获取支付详情 $paymentDetails = PayFast::getTransactionDetails($request->pf_payment_id); // 根据需要...

    后台用户登录-Token模块

    - **JWT的基本结构**:JWT由三部分组成,分别是头部(Header)、载荷(Payload)以及签名(Signature)。这三部分之间通过点号(.)连接。 - **JWT的组成部分详解**: - **头部(Header)**:包含关于Token类型的...

    Amazon S3 Api Manual

    手册还详细介绍了其他与 Amazon S3 相关的操作,如 GET Service(获取服务状态)、POST 操作(上传文件)等,并提供了相应的请求和响应示例。 #### 浏览器上传 (POST) 浏览器上传主要使用 POST 方法,通过构建 ...

    Python库 | flask_jwt_consumer-1.1.0-py3-none-any.whl

    Header 和 Payload 都是 JSON 对象,通过 Base64Url 编码,Signature 是对前两部分进行编码后的数据和一个秘密(secret key)通过特定算法计算得出,用于验证令牌的完整性和来源。 `flask_jwt_consumer` 库的主要...

    Basic-Auth-JWT

    JWT虽然安全,但要确保签名密钥的安全,避免被恶意获取。同时,不要在JWT中存储敏感信息,因为它们可能会被解码。 6. **路由保护**:在Node.js后端或前端框架(如React、Angular、Vue等)中,需要实现中间件或守卫...

Global site tag (gtag.js) - Google Analytics