【问题标题】:How to properly serve static assets with Hapijs如何使用 Hapijs 正确提供静态资产
【发布时间】:2015-01-22 14:52:52
【问题描述】:

我正在尝试快速指向我的 heroku 实例,该实例正在运行 hapijs 并从 /assets/ 提供静态文件。我有一个如下所示的路线设置:

  // Assets
  {
    method: "GET",
    path: "/assets/{path*}",
    config: {
      cache: {
        privacy: 'public',
        expiresIn: 31536000000 // 1 year in milliseconds
      }
    },
    handler: {
      directory: { path: './public/assets'}
    }
  },

以下是每个请求发回的标头:

HTTP/1.1 200 OK
content-type: text/css; charset=utf-8
last-modified: Thu, 22 Jan 2015 07:08:07 GMT
etag: "9c7d48799e5230b7c97ef1978b81ad533c10b950"
set-cookie: csrf=xyz; Path=/
set-cookie: session=xyz; Path=/
cache-control: max-age=31536000, must-revalidate, private
Date: Thu, 22 Jan 2015 07:21:15 GMT
Connection: keep-alive

我如何不对来自此 enpoint 的响应设置 cookie 以及为什么 cache-control 标头设置 must-revalidateprivate。不应该公开吗?

【问题讨论】:

  • 您是否使用任何插件或身份验证?

标签: node.js cdn hapijs fastly


【解决方案1】:

我终于解决了这个问题。我有一些设置 cookie 的插件:yarhapi-auth-cookiecrumb。不幸的是,目前还没有任何标准方法可以从特定路径中删除插件。

  • crumb 允许您将skip 函数添加到将禁用它的注册选项。

  • auth 让我们通过设置auth: false 在路由配置中禁用它。

  • yar 还没有任何机制来解决这个问题,所以我提交了一个 PR 来修复它

【讨论】:

    【解决方案2】:

    您还可以在响应被认为存储在缓存中之前通过 Fastly 删除 cookie。为此,您需要执行以下配置步骤:

    1. 内容 -> 标题:

      姓名Remove Set-Cookie from /assets

      输入:Cache

      操作:Delete

      目的地:http.Set-Cookie

    2. 在新生成的标头配置上:设置 -> 缓存条件 ->
      新的

      姓名:/assets

      申请条件:req.url ~ "^/assets/"

    这将在 Set-Cookie 标头被 Fastly “看到”之前将其删除,从而使其可缓存。

    【讨论】:

      猜你喜欢
      • 2018-10-10
      • 2020-06-19
      • 2013-03-06
      • 2021-01-22
      • 2016-10-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多