我正在进行一个Larave、Inertiajs和Vue项目,希望每个产品都能像https://{user:username}.example.test/{product:slug}
这样的路线打开
因此,基本上我需要我的网站运行在example.test和任何产品显示在username.example.test/productSlug
我遇到了一个问题,即收到CORS错误,我在这里写了一个线程Laravel Inertia apps doesn't support subdomain redirects - No 'Access-Control-Allow-Origin'
不幸的是,我没有得到我需要的帮助,但经过几个小时的搜索,我发现了stackoverflow上的this,这帮助我终于成功地使重定向到正确的URL工程,但问题是,它并不真正工作.
解释如下:
控制器存储操作完成它应该做的事情,然后重定向到我的产品的工作页面没有cors错误,唯一的问题是,它显示在浏览器中的example.test/productSlug
,而它应该是username.example.test/productSlug
.当我刷新页面时,我在不正确的网址它让我的页面找不到错误,这是有意义的,因为实际正确的路线包含我想要的页面.
当我在firefox上跟踪请求时,我可以看到主机是正确的(用户名.示例.测试)但我到达的网址是'示例.测试',此外,当我被重定向到错误的路线,我可以看到我的产品和一切工作正常,但它'这不是一个工作的网址,因为当我刷新它给我的页面找不到,当我手动写入正确的网址username.example.test/productSlug
它引导我到一个工作我产品的页面。
我希望你没搞混。
这是我的产品控制器@商店中的重定向行:
public function store(StoreProductRequest $request)
{
// Code
return redirect()->route('products.show', [$user, $product]);
}
我的路线如下所示:
Route::domain('{user:username}.' . env('APP_URL'))->group(function () {
Route::get('{product:slug}', [ProductController::class, 'show'])->name('products.show');
});
这是我展示产品的方式:
public function show(User $user, Product $product)
{
return Inertia::render('Products/Show', [
'user' => $user,
'product' => $product,
'thumbnails' => $product->productimages
]);
}
我对cors.php做了以下修改:
'paths' => ['api/*', '*', 'sanctum/csrf-cookie'],
'allowed_methods' => ['*'],
'allowed_origins' => ['*'],
'allowed_origins_patterns' => [],
'allowed_headers' => ['*'],
'exposed_headers' => ['x-inertia'],
'max_age' => 0,
'supports_credentials' => false,
1条答案
按热度按时间xwmevbvl1#
经过几天的研究,我现在确信,如果不刷新整个页面,从根域到子域的路由是不可能的。主机的任何更改都需要重新加载页面,这超出了Laravel和JetStream的范围,也超出了InertiaJS的控制范围。据我所知,这是出于安全目的。在这里查看更多https://github.com/inertiajs/inertia-laravel/issues/431