キーワード†
- 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がセットされなかった理由は不明。追求していない。