Apollo 客户端自签名证书
Posted
技术标签:
【中文标题】Apollo 客户端自签名证书【英文标题】:Apollo-client self signed certificate 【发布时间】:2018-09-21 20:15:26 【问题描述】:有没有办法让 ApolloClient 接受来自带有自签名证书的服务器的请求?
import ApolloClient from 'apollo-boost';
const client = new ApolloClient(
uri: `https://$window.location.hostname:8080/graphql`,
rejectUnauthorized: false
);
rejectUnauthorized: false 不起作用
请求错误: 选项https://localhost:8080/graphqlnet::ERR_CERT_AUTHORITY_INVALID
【问题讨论】:
【参考方案1】:您也可以使用代理选项进行开发:
let fetchOptions =
if (process.env.NODE_ENV !== 'production')
const https = require('https')
fetchOptions = agent: new https.Agent( rejectUnauthorized: false )
const link = new HttpLink(
uri: 'https://localhost/api/graphql',
credentials: 'same-origin',
fetchOptions,
)
【讨论】:
【参考方案2】:前端
即使您单击“我了解风险”并转到该页面,Apollo 客户端也可能拒绝证书。您可以通过从本地主机启用自签名证书来解决此问题:在 chrome 类型上
chrome://flags/#allow-insecure-localhost
到导航并点击启用。
其他选项是将证书安装为受信任的。更多信息请关注this question。
后端
如果您在后端使用 Apollo 客户端和 Nodejs,您可以使用以下方式启动该过程:
NODE_TLS_REJECT_UNAUTHORIZED=0
这可以通过例如env-cmd 包。
【讨论】:
以上是关于Apollo 客户端自签名证书的主要内容,如果未能解决你的问题,请参考以下文章