障害メモ/Playwrightで特定のリクエストが403になってパスしない
キーワード
- 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がセットされなかった理由は不明。追求していない。
参考
作成日 2025-01-29
