【发布时间】:2022-03-29 11:24:22
【问题描述】:
我有一个使用 Firebase Cloud Functions 构建的 REST API。无论我尝试什么,我都无法从 CDN 缓存中获取任何要服务的端点。
一些相关的细节:
- 我正在使用 csurf 中间件。
- 我已经(在选择的端点上)设置了一个缓存控制标头值
private, max-age=3600, s-maxage=86400 - 虽然客户端应用程序要求对用户进行身份验证,但通过设置典型获取请求的选项,对上述端点的请求会省略任何 cookie 和身份验证相关数据,如下所示:
{
\"method\":\"GET\",
\"headers\":{
\"Accept\":\"application/json\",
\"Content-Type\":\"application/json\"
},
\"cache\":\"default\",
\"credentials\":\"omit\"
}
无论我从不同的浏览器(或 Postman)发出多少次相同的请求,我都不会收到任何 CDN 缓存命中。响应标头通常如下所示:
accept-ranges: bytes
cache-control: private, max-age=3600, s-maxage=86400
content-encoding: gzip
content-type: application/json; charset=utf-8
date: Tue, 22 Mar 2022 20:23:18 GMT
etag: W/\"410-SrNPDF/58eInOtNbbyxn6XXXXXXX\"
expires: Tue, 22 Mar 2022 20:23:17 GMT
function-execution-id: XXXXXXXXXXXX
server: Google Frontend
set-cookie: _csrf=emL-XXXXXXXXXXXXXXXXXXXX; Path=/
set-cookie: XSRF-TOKEN=H3sVcdDA-XXXXXXXXXXXXXXXXXXXXXXXXXXX; Path=/
strict-transport-security: max-age=31556926
vary: cookie,need-authorization, x-fh-requested-host, accept-encoding
x-cache: MISS
x-cache-hits: 0
x-cloud-trace-context: b50952340f930d74ebfbebXXXXXXXXXX;o=1
x-country-code: US
x-orig-accept-language: en-US,en;q=0.9
x-powered-by: Express
x-served-by: cache-lax10660-LGB
x-timer: S1647980596.749133,VS0,VE2278
我知道 \"vary\" 标头的影响,尽管 Firebase 似乎不允许您从中减去项目 - 只能添加更多内容。
我错过了什么? 蒂亚!
标签: firebase google-cloud-functions firebase-hosting google-cloud-cdn