Nuxt.js router.push 在使用 asyncData 查询时没有完全重定向到另一个页面

Posted

技术标签:

【中文标题】Nuxt.js router.push 在使用 asyncData 查询时没有完全重定向到另一个页面【英文标题】:Nuxt.js router.push doesn't fully redirect to another page while using asyncData query 【发布时间】:2020-08-16 20:23:37 【问题描述】:

我在我的一个页面中使用 asyncData 查询:

async asyncData($axios, query) 
  const id = query.id;

  try 
    const data = await $axios.$get(`http://localhost:8000/api/question/$id`);
    return 
      question: data

    
   catch (e) 
    console.log(e);
  
,

每当我尝试从此页面访问另一条路线时,例如:

@click="$router.push('/solution'); addTodo(question.keywords); addTodo(option.keywords)">

它将我重定向到此页面/解决方案,但访问 API 的请求仍然来自上一页(问题/id)

访问 localhost:3000/解决方案页面:

CORS 适用于所有其他页面,所以我认为问题出在重定向上。

有什么可能的解决方案来解决这个问题?

另外,这是我在“网络”选项卡中看到的:

我认为referer应该是:localhost:3000/solution

【问题讨论】:

这里是 Firefox 控制台错误的链接:imgur.com/e6UXP5z @sideshowbarker > 跨域请求被阻止:同源策略不允许读取位于 localhost:8000/api/getsolution 的远程资源。 (原因:CORS 标头“Access-Control-Allow-Origin”缺失)。正如我所看到的,这是 CORS 错误,但据我所知,CORS 一切正常,我已经检查了几次后端。此外,一切都在其他页面上完美运行 前端路径为localhost:3000/solution,后端调用localhost:8000/api/getsolution。我在 asyncData 方法中调用 localhost:8000/api/getsolution(在解决方案路径中) 我的后端是 Laravel,我使用的是 github.com/fruitcake/laravel-cors,一切都已启用 [*]。通过说更新问题以显示 CORS 配置 - 你能澄清一下你的意思吗? 哦,当然。 config/cors.php -> 'allowed_headers' => ['*'], 我不知道,但也许可以尝试将其设置为 'paths' => ['api/*'] 我猜 【参考方案1】:

'paths' => ['api/*'] 添加到 Laravel 后端 CORS 配置有帮助。

【讨论】:

以上是关于Nuxt.js router.push 在使用 asyncData 查询时没有完全重定向到另一个页面的主要内容,如果未能解决你的问题,请参考以下文章

<router like;和router.push的区别

vueRouter push问题的思考

[Vue] vue-router push/replace/go用法区别

vue 项目 路由 router.push router.replace 和 router.go

vue-router 2.0 跳转之router.push()

Nuxt学习笔记