0

我试图快速指向我的 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

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

4

2 回答 2

0

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

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

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

  • yar还没有任何机制可以做到这一点,所以我提交了一个 PR 来修复它

于 2015-01-23T18:02:50.657 回答
0

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

  1. 内容 -> 标题:

    姓名Remove Set-Cookie from /assets

    类型:Cache

    行动:Delete

    目的地:http.Set-Cookie

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

    姓名:/assets

    申请如果:req.url ~ "^/assets/"

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

于 2015-09-21T08:51:32.117 回答