使用 https 调用服务器端 API 的 Nuxt.js 问题

Pio*_*sek 6 javascript ssl https server nuxt.js

我在使用 HTTP S时遇到了 nuxt 服务器端 API 调用的问题。在客户端,一切都很好,当我通过链接在客户端切换页面时,API 可以工作,但是当我按 Ctrl + f5 并且数据将在服务器端预取时,实际上没有 API 调用并且没有提供数据。即使没有错误被抛出,但一切都可以与普通的 HTTP 一起正常工作。

在我的生产服务器 nodejs 版本 - v10.9.0 和 HTTPS im 使用通过我的 nodejs 网络托管提供商提供的 SNI SSL

这个问题类似于:https : //github.com/nuxt/nuxt.js/issues/2934 除了那里提供的解决方案对我不起作用。

编辑:

这是在 axios 进入 nuxtServerInit 后我在 store.js 中出现的错误: “无法验证第一个证书”

编辑 2:

之后我发现:https : //forum.vuejs.org/t/nuxtserverinit-with-axios-unable-to-verify-the-first-certificate/31010

我应用了扩展 axios 的插件:

插件/axios.js:

import https from 'https';

export default function ({ $axios }) {
    $axios.defaults.httpsAgent = new https.Agent({ rejectUnauthorized: false });
}
Run Code Online (Sandbox Code Playgroud)

nuxt.config.js:

plugins: [
    '@/plugins/axios',
]
Run Code Online (Sandbox Code Playgroud)

它现在可以在服务器端和客户端一样好用。但我还有一个问题。这个解决方案安全吗?

Foo*_*Bar 6

我发现此解决方案更易于管理:

export NODE_TLS_REJECT_UNAUTHORIZED=0 && yarn dev --env.NODE_TLS_REJECT_UNAUTHORIZED=0
Run Code Online (Sandbox Code Playgroud)

它还确保它只在开发过程中运行,自签名证书的问题最有可能发生。

你也可以像这样将它添加到你的 package.json 中:

"scripts": {
  "dev": "export NODE_TLS_REJECT_UNAUTHORIZED=0 && nuxt --env.NODE_TLS_REJECT_UNAUTHORIZED=0",
Run Code Online (Sandbox Code Playgroud)

作为插件

你也可以创建一个plugins/axios.js文件

export NODE_TLS_REJECT_UNAUTHORIZED=0 && yarn dev --env.NODE_TLS_REJECT_UNAUTHORIZED=0
Run Code Online (Sandbox Code Playgroud)

确保将插件添加到您的nuxt.config.js文件中

  • 只需将“NODE_TLS_REJECT_UNAUTHORIZED=0”添加到我的 .env 文件中就足够了,谢谢! (4认同)