本文へ移動

プロキシ ​

ヒント

更新: プロキシ機能を簡単に使える新しい Proxy ヘルパーを導入しました。詳しくは Proxy ヘルパーのドキュメントを参照してください。

ts
import { Hono } from 'hono'

const app = new Hono()

app.get('/posts/:filename{.+.png$}', (c) => {
  const referer = c.req.header('Referer')
  if (referer && !/^https:\/\/example.com/.test(referer)) {
    return c.text('Forbidden', 403)
  }
  return fetch(c.req.url)
})

app.get('*', (c) => {
  return fetch(c.req.url)
})

export default app

ヒント

同様のコードで Can't modify immutable headers. エラーが発生する場合は、レスポンスオブジェクトを複製する必要があります。

ts
app.get('/', async (_c) => {
  const response = await fetch('https://example.com')
  // clone the response to return a response with modifiable headers
  const newResponse = new Response(response.body, response)
  return newResponse
})

fetch が返す Response のヘッダーは変更できません。そのため、変更しようとするとエラーが発生します。

MIT ライセンスで公開されています。