首页 > 解决方案 > 如何在 JAMstack 解决方案中代理 API 请求?

问题描述

我正在开发一个几乎完全静态的网站。我使用生成器来创建所有 HTML。

但是,我的网站是嵌入在其页面中的商店的前端。我有一个小 node.js 服务器代表浏览器到后端存储的代理请求。它所做的只是提供购物车中的商品数量,这样我就可以在我网站的所有页面上保持更新数量。那是因为浏览器不允许跨域脚本。我的服务器必须充当客户端和商店之间的代理。

(嵌入式商店是从商店的网站加载的,因此它本身不需要代理。)

我希望最终部署到 Netlify 或一些类似的 JAMstack 提供商。但我不知道如何在 Netlify 上进行代理。

这个问题的标准解决方案是什么?还是 JAMstack 解决方案无法使用代理?是否有解决此问题的 JAMstack 提供商?

标签: proxystatic-sitenetlifycross-sitejamstack

解决方案


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


推荐阅读