【问题标题】:Apollo-client self signed certificateApollo 客户端自签名证书
【发布时间】: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
【问题讨论】:
标签:
javascript
reactjs
apollo
apollo-client
【解决方案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 包。