cloudflare pages advanced mode architecture

fetchしたenv.ASSETSを経由してHTMLRewriterを使用可能。

/_workers.js(data uri)

code

export default{
    fetch(req,env){
        return(c=>c(env.CONTENT))(async v=>(res=>v&&200===res.status?new HTMLRewriter().on(`head`,{
            element(e){
                e.append(v,{html:true})
            }
        }).transform(res):res)(await env.ASSETS.fetch(req)))
    }
}

if ads available.
const{pathname}=new URL(req.url)
if(env.ADS_TXT&&`/ads.txt`===pathname)return new Response(env.ADS_TXT.replace(/(?<!^|\n)$/,`\n`),{headers:{[`content-type`]:`text/plain;charset=utf-8`}})

/_headers(data uri)

code

/*
  Content-Security-Policy: default-src 'self'; script-src 'self' 'unsafe-inline'; style-src 'self' 'unsafe-inline'; img-src 'self' blob:
  X-Frame-Options: DENY
  X-Content-Type-Options: nosniff

/*.js
  Content-Type: application/javascript; charset=utf-8