Skip to content

Bug: マイページが表示されない (CORS supports_credentials=false + フロントポートのハードコード) / User mypage does not display after login #540

Description

@zigzagdev

Motivation / 目的

「ログイン後にUserのマイページがまだ表示されない」というバグ報告を受けて調査した結果、CORS/Sanctum設定に原因と考えられる問題が複数見つかったため起票する。

Investigating the reported bug "User mypage still does not display after login" surfaced multiple CORS/Sanctum configuration issues that are likely root causes.

調査でわかったこと / What we found

  • フロント(localhost:3876)・バックエンド(Laravel Sanctum, localhost:8700)はどちらも起動済みで、/sanctum/csrf-cookie は204を返し XSRF-TOKEN / laravel_session のCookieも発行されている
  • しかし config/cors.phpsupports_credentialsfalse になっている。Sanctumのcookieベースの SPA 認証は、フロントが credentials: 'include' でリクエストを送り、ブラウザが Access-Control-Allow-Credentials: true を確認できて初めてCookieをクロスオリジンで送受信できる。false のままだと、ログイン自体は成立しても、その後の「現在のユーザーを取得する」リクエストがブラウザ側でブロックされ、マイページが表示されない症状と一致する
  • config/cors.phpallowed_origins にフロントのURLが http://localhost:3876 のようにハードコードされている。実際に確認したレスポンスのCSPヘッダーには http://host.docker.internal:5173 への許可が含まれており、READMEの起動コマンド(--port 3876)と食い違っていた。バックエンド側が「フロントはVite標準の5173番ポートで動く」という前提のまま更新されておらず、実際の起動ポートとズレている
  • フロント側は VITE_API_BASE_URL.env.local)でバックエンドのURLを環境変数化済みだが、バックエンド側はフロントのオリジンをハードコードしたままで対称になっていない

対応方針 / Proposed fix

  • config/cors.phpsupports_credentialstrue に修正する
  • config/cors.phpallowed_origins(および必要であれば config/sanctum.php の stateful domains)を、ハードコードではなく FRONTEND_URL 環境変数経由で参照するようにする
  • .env / .env.exampleFRONTEND_URL を追加する

Test Results / テスト結果

(このIssueは調査記録・対応方針の共有のため作成。対応PRで実施したテストを記載予定)

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions