首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >App Worker和Custom Worker冲突

App Worker和Custom Worker冲突
EN

Stack Overflow用户
提问于 2019-03-26 11:54:05
回答 1查看 114关注 0票数 0

我的Cloudflare App worker似乎与用户的自定义worker冲突。基本上,当他们安装了worker,并安装了我的应用程序时,他们的网站根本没有响应。

我不太确定是什么原因造成的。我的工作人员根本没有修改请求。他们的是,但我看不到任何明显的东西。

我在他允许的情况下把他的工人派到这里。

他们的工人:

代码语言:javascript
复制
let securityHeaders = {
    "Content-Security-Policy" : "upgrade-insecure-requests",
    "Strict-Transport-Security" : "max-age=1000",
    "X-Xss-Protection" : "1; mode=block",
    "X-Frame-Options" : "DENY",
    "X-Content-Type-Options" : "nosniff",
    "Referrer-Policy" : "strict-origin-when-cross-origin",
}

let sanitiseHeaders = {
    "Plan" : "Dental",
    "Batman" : "Scientist",
    "Lisa-Needs" : "Braces"
}

let removeHeaders = [
    "x-goog-generation",
    "x-goog-hash",
    "x-goog-metageneration",
  "x-goog-meta-goog-reserved-file-mtime",
  "x-goog-stored-content-encoding",
  "x-goog-storage-class",
  "x-goog-stored-content-length",
  "X-GUploader-UploadID"
]

addEventListener('fetch', event => {
    event.respondWith(addHeaders(event.request))
})

async function addHeaders(req) {
    let response = await fetch(req)
    let newHdrs = new Headers(response.headers)

    if (newHdrs.has("Content-Type") && !newHdrs.get("Content-Type").includes("text/html")) {
        return new Response(response.body , {
            status: response.status,
            statusText: response.statusText,
            headers: newHdrs
        })
    }

    Object.keys(securityHeaders).map(function(name, index) {
        newHdrs.set(name, securityHeaders[name]);
    })

    Object.keys(sanitiseHeaders).map(function(name, index) {
        newHdrs.set(name, sanitiseHeaders[name]);
    })

    removeHeaders.forEach(function(name){
        newHdrs.delete(name)
    })

    return new Response(response.body , {
        status: response.status,
        statusText: response.statusText,
        headers: newHdrs
    })
}

我的worker (通过my Cloudflare App安装):

代码语言:javascript
复制
function buildLogEntry(request, response) {
  const options = INSTALL_OPTIONS

  const logDefs = {
    rMeth: request.method,
    rUrl: request.url,
    uAgent: request.headers.get("user-agent"),
    cfRay: request.headers.get("cf-ray"),
    cIP: request.headers.get("cf-connecting-ip"),
    statusCode: response.status,
    contentLength: response.headers.get("content-legth"),
    cfCacheStatus: response.headers.get("cf-cache-status"),
    contentType: response.headers.get("content-type"),
    responseConnection: response.headers.get("connection"),
    requestConnection: request.headers.get("connection"),
    cacheControl: response.headers.get("cache-control"),
    acceptRanges: response.headers.get("accept-ranges"),
    expectCt: response.headers.get("expect-ct"),
    expires: response.headers.get("expires"),
    lastModified: response.headers.get("last-modified"),
    vary: response.headers.get("vary"),
    server: response.headers.get("server"),
    etag: response.headers.get("etag"),
    date: response.headers.get("date"),
    transferEncoding: response.headers.get("transfer-encoding"),
  }

  const logArray = []

  options.metadata.forEach(entry => {
    logArray.push(logDefs[entry.field])
  })

  const logEntry = logArray.join(" | ")

  return logEntry
}

async function handleRequest(event) {
  const { request } = event
  const response = await fetch(request)
  const rHost = request.headers.get("host")

  const options = INSTALL_OPTIONS
  const sourceKey = options.source
  const apiKey = options.logflare.api_key

  const logEntry = buildLogEntry(request, response)

  const init = {
    method: "POST",
    headers: {
      "X-API-KEY": apiKey,
      "Content-Type": "application/json",
      "User-Agent": `Cloudflare Worker via ${rHost}`,
    },
    body: JSON.stringify({ source: sourceKey, log_entry: logEntry }),
  }

  event.waitUntil(fetch("https://logflare.app/api/logs", init))

  // console.log(cIP)

  return response
}

addEventListener("fetch", event => {
  event.respondWith(handleRequest(event))
})
EN

回答 1

Stack Overflow用户

发布于 2019-03-26 22:15:25

这听起来很可能是系统中更深层次的错误,而不是你的错。你能发电子邮件给我(cloudflare的kenton),我们会设法追踪这里发生的事情吗?

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55349601

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档