当我使用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',
]
它现在在服务器端和客户端都可以使用。但是我还有另一个问题。这个解决方案安全吗?
答案 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