在 Nuxt.js 中请求奇怪的行为

Posted

技术标签:

【中文标题】在 Nuxt.js 中请求奇怪的行为【英文标题】:Request wierd behaviour in Nuxt.js 【发布时间】:2020-03-02 20:44:34 【问题描述】:

我有一个奇怪的问题,可能是我造成的,我个人怀疑是服务器端代码,但我想看看我是否遗漏了什么,所以我的目标不是相应地更改服务器我可以这样做,但我想了解幕后发生的事情。所以我有一个 Nuxt 应用程序需要消耗 2 个 api,我决定在早期测试它是如何工作的,所以我尝试了一些最初使用 @nuxtjs/axios 模块的 axios 请求运行良好,但现在,我所看到的真的让我很困惑。

这是请求的外观:

async fetchData() 
      const data = await this.$axios.$get(
        process.env.cmBaseUrl + '/api/products',
        
          auth: 
            username: process.env.cmUsername,
            password: process.env.cmPassword
          
        
      )
      console.log(data)
    

服务器正在使用基本授权,这就是我使用 auth 属性的原因,但那是之前工作的,我还尝试从 nuxtServerInit(在存储中)、asyncData(在页面中)、普通方法和布局中调用,无济于事(正如我之前所说,它在商店和页面中都有效)。

但在这种情况下真正奇怪的是,在我运行 npm run dev 的控制台中,当我重新加载页面时,我可以看到来自该请求的响应,并且 created() 挂钩运行 fetchData()功能。

但是在浏览器控制台中,我看到网络错误并且请求停留在 OPTIONS 上(虽然它之前确实通过了,但在服务器端没有任何变化,它不应该与 CORS 相关)。

所以我主要担心的是我不明白(我知道这是我的错)为什么请求在节点环境中传递,但在浏览器中具有不同的行为,如果它确实与 CORS 相关,因为浏览器请求卡在OPTIONS 上,从来没有到达过 GET 请求,怎么会通过节点?

【问题讨论】:

【参考方案1】:

据我了解,您可以在命令行中看到响应,但在浏览器中看不到,这是意料之中的。 CORS 仅发生在浏览器中。命令行、邮递员和类似的东西不是浏览器,你不会在它们中得到 CORS 错误。您需要在后端应用中设置 CORS 政策,以便能够在浏览器中获得响应。

【讨论】:

以上是关于在 Nuxt.js 中请求奇怪的行为的主要内容,如果未能解决你的问题,请参考以下文章

Nuxt.js asyncData 多请求

Leafage 诞生记(二nuxt.js如何在组件和页面请求数据)

Vue.js 和 Nuxt.js

Nuxt 新组件不热重载/编译

在 Nuxt.js 中发送每个请求时,如何将对象添加到 apollo 上的数据?

在 Nuxt js 项目中配置 stylelint 文件