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

时间:2019-03-31 11:04:58

标签: 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的插件:

plugins / axios.js:

import https from 'https';

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

nuxt.config.js:

plugins: [
    '@/plugins/axios',
]

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

2 个答案:

答案 0 :(得分:3)

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

export NODE_TLS_REJECT_UNAUTHORIZED=0 && yarn dev --env.NODE_TLS_REJECT_UNAUTHORIZED=0

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

您还可以像这样将其添加到package.json中:

"scripts": {
  "dev": "export NODE_TLS_REJECT_UNAUTHORIZED=0 && nuxt --env.NODE_TLS_REJECT_UNAUTHORIZED=0",

作为插件

您还可以创建一个plugins/axios.js文件

import https from 'https';

export default function ({
  $axios,
  store
}) {
  const agent = new https.Agent({
    rejectUnauthorized: false
  });
  $axios.onRequest(config => {
    if (process.env.dev) {
      config.httpsAgent = agent;
    }
  });
}

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

答案 1 :(得分:0)

继续 foobar's 的想法:对于 Windows 操作系统,您不需要在 package.json 中编写“export”,而是“set”:

set NODE_TLS_REJECT_UNAUTHORIZED=0 && nuxt --env.NODE_TLS_REJECT_UNAUTHORIZED=0