重定向

当手动或通过 <Link> 元素进行非 GET Inertia 请求时,应确保始终使用正确的 Inertia 重定向响应进行响应。

例如,如果您的控制器正在创建新用户,则您的“store”端点应返回重定向到标准 GET 端点(例如,您的用户“index”页面)。Inertia 将自动遵循此重定向并相应地更新页面。

class UsersController extends Controller
{
    public function index()
    {
        return Inertia::render('Users/Index', [
            'users' => User::all(),
        ]);
    }

    public function store(Request $request)
    {
        User::create(
            $request->validate([
                'name' => ['required', 'max:50'],
                'email' => ['required', 'max:50', 'email'],
            ])
        );

        return to_route('users.index');
    }
}

303 响应代码

PUTPATCHDELETE 请求后重定向时,必须使用 303 响应代码,否则后续请求将不会被视为 GET 请求。 303 重定向与 302 重定向非常相似;但是,后续请求被明确更改为 GET 请求。

如果您使用的是我们的官方服务器端适配器之一,所有重定向将自动转换为 303 重定向。

外部重定向

有时需要重定向到外部网站,甚至在处理 Inertia 请求时重定向到应用程序中的另一个非 Inertia 端点。这可以通过使用服务器端发起的 window.location 访问(通过 Inertia::location() 方法)来实现。

return Inertia::location($url);

Inertia::location() 方法将生成一个 409 Conflict 响应,并在 X-Inertia-Location 标头中包含目标 URL。当客户端收到此响应时,Inertia 将自动执行 window.location = url 访问。