PuppeteerのsetContentで//から始まるリソースにアクセスする方法

2020/06/18 15:06:122020/06/18 15:24:16

//hoge.example.com/assets/... というURIは、見ているページのスキームをそのまま使ってくださいね、という意味であるが、PuppeteerでnewPageしたあとこれを含むページをsetContentすると、スキームがfile://で解決されてしまい、http/httpsでリクエストがされない。
解消は簡単(かつ微妙)で、現状(いつの?)のPuppeteerでは、setContentを用いると現在表示しているリソースを上書きしての表示を試みる(気がする)ので、最初にpage.go("https://example.com")でもして、そのあとにsetContentを行えばよい。
  • 微妙なのは、外部依存が発生してしまう点である。心配であればローカルホストに自己証明書を効かせたウェブページでも立ててそちらにアクセスするようにすれば良いが、サーバレス環境であるとなかなか難しかったりする。
  • 確認していないが、外部リクエストが発生する場合リファラも最初にgoしたページのものになる?

用いた
  • Vercelで動かしてるサービスだしvercel.com開くようにすれば実質的内部依存になる気がする
  • 気づくのが遅い

あとがき
  • 予防線貼りすぎ


著者の画像

ci7lus

@ci7lus

Caramelize - Made withCaramelizeand / Privacy