proxy - 如何在 JAMstack 解决方案中代理 API 请求?
问题描述
我正在开发一个几乎完全静态的网站。我使用生成器来创建所有 HTML。
但是,我的网站是嵌入在其页面中的商店的前端。我有一个小 node.js 服务器代表浏览器到后端存储的代理请求。它所做的只是提供购物车中的商品数量,这样我就可以在我网站的所有页面上保持更新数量。那是因为浏览器不允许跨域脚本。我的服务器必须充当客户端和商店之间的代理。
(嵌入式商店是从商店的网站加载的,因此它本身不需要代理。)
我希望最终部署到 Netlify 或一些类似的 JAMstack 提供商。但我不知道如何在 Netlify 上进行代理。
这个问题的标准解决方案是什么?还是 JAMstack 解决方案无法使用代理?是否有解决此问题的 JAMstack 提供商?
解决方案
Netlify 允许使用状态码为 200 的重定向路径进行代理重写。
您可以将代理重定向存储在_redirects
已部署站点的根目录中。换句话说,该文件需要存在于站点目录的根目录中才能在构建后部署。
_redirects
/api/* https://api.example.com/:splat 200
所以调用:
/api/v1/gifs/random?tag=cat&api_key=your_api_key
将被代理:
https://api.example.com/v1/gifs/random?tag=cat&api_key=your_api_key
如果 API 支持标准 HTTP 缓存机制,例如 Etags 或 Last-Modified 标头,则响应甚至会被 CDN 节点缓存。
注意:您还可以在您的netlify.toml
推荐阅读
- java - 比较多个字符串值并将它们存储在 SET/Array 中
- javascript - 将对象推送到空数组返回数组的长度而不是数组
- python-3.x - 使用 Python Newspaper3k 获取 article.text 的 URL
- r - 我在 ggplot 中的 y 轴有问题吗?
- database - 单个 ElasticSearch 查询中的多个 match_phrase 条件与另一个布尔?
- cordova - TypeError:对象原型可能只是一个对象或 null:在 Ionic3 中未定义
- c# - 从包含 zip 的流中提取文件
- python - 如何向使用 Flask 创建的 Python API 添加新参数
- node.js - How to use the full request URL in AWS Lambda to execute logic only on certain pages
- android - Android: Access activity context from TimerTask