home wiki.fukuchiharuki.me
Menu

キーワード

  • Playwright
  • OPTIONS
  • PUT
  • 403 Forbidden

現象

ブラウザで直接操作する分には問題ないがPlaywrightで同じ操作をしてパスしないケースがあった。

諸々あったので箇条書きにする:

  • PUTリクエストを処理できなかった
  • PUTの前にOPTIONSをリクエストしていた
  • OPTIONSリクエストで403 Forbiddenになっていた
  • サーバー側でOPTIONSリクエストの問題を解決したが、PUTリクエストで403 Forbiddenになった

原因

PUTの前にOPTIONSをリクエストしていた

単純リクエストでないためにプリフライトを行っていた。

OPTIONSリクエストで403 Forbiddenになっていた

サーバー側でAllowedOriginの設定を誤っていた。それに加えPlaywrightではlocalhostへのアクセスは127.0.0.1になっていた。

PUTリクエストで403 Forbiddenになった

どういうわけだか分からないがログを見る限りCookieがセットされておらず必要な認証等ができていなかった。

対策

PUTリクエストするエンドポイントはローカル環境では別サービスを模したスタブでしかないこともあり、Playwrightでレスポンスをエミュレートすることにした。

// stub
await page.route('**/path/to/endpoint', async (route) => {
  await route.fulfill({ status: 200 });
});

備考

肝心のPUTリクエストでCookieがセットされなかった理由は不明。追求していない。

参考