Home avatar

一个简简单单的博客,主要分享学习过程中整理出来的知识以及踩过的坑

一次谷歌支付订单校验报 PermissionDenied 的踩坑记录

最近踩了一个谷歌支付相关的坑,表面现象很简单:服务端在查询订单或校验支付结果时,接口直接报错:

1
2
The current user has insufficient permissions to perform the requested operation.
permissionDenied

这个报错如果只看字面,很容易理解成“账号权限不够”,但真正麻烦的地方在于,它并不会直接告诉你到底是:

  • Google Cloud 里的服务账号有问题
  • Google Play Console 里的授权丢了
  • API 没启用
  • 还是后端正在用一份已经失效的 JSON 凭证

这篇文章就把这次问题完整记一下,重点讲三件事:

  1. 这个问题最开始是怎么发现的
  2. 中间是怎么一步步排查的
  3. 最后到底该怎么恢复

一次 Postman 报错 Unexpected End of File 的排查复盘

最近遇到一个挺绕的接口问题:Postman 请求状态码明明是 200,但就是没有响应数据,同时还会报一个看起来很奇怪的错误:

1
Error: unexpected end of file

一开始看到这个报错,很容易怀疑是服务端没启动、返回体格式不对,甚至是接口代码本身有异常。但这次真正的问题,不在业务逻辑,而是在“测试环境请求链路 + 压缩编码 + 代理转发”这几个环节叠在了一起。

这篇文章就把这次排查过程完整梳理一下,重点讲清楚这几个问题:

  1. 为什么 curl 能正常返回,而 Postman 不行
  2. 为什么有些接口正常,只有部分接口出问题
  3. 为什么最终定位到的是 content-encoding: br
  4. 测试环境里的反向代理到底起了什么影响
  5. 最后是怎么处理掉的

如何通过亚马逊S3存储桶 + CloudFront + Cloudflare 部署 H5 项目

最近折腾了一次 H5 项目的上线,原本以为这种纯前端静态项目会很简单,结果真正麻烦的地方根本不在打包,而是在部署链路上:S3 目录权限、CloudFront 的 SPA 回退、Cloudflare 的域名解析切换、还有 App 内 WebView 的缓存问题。

这篇文章就把这次完整过程整理一下,专门讲如何通过 Amazon S3、CloudFront 和 Cloudflare 部署 H5 项目,以及上线过程中最容易踩的坑和对应处理方式。

聊聊倒排索引的使用场景和框架

之前面试的时候遇到过这么个问题,有一批20w左右的数据要做缓存,每条数据主要是游戏信息,附带多个标签/游戏类型,现在要实现前端可以选择多个游戏类型, 接口返回相关游戏信息并且可以分页,这个该怎么实现。

0%