我有一个用Next.js和Apollo制作的web应用,如示例with-apollo所示。我想通过我的webapp(基于名称的虚拟主机)为多个域提供服务。不幸的是,GOManager_ = std::make_shared<ObjectManager>(playerAges_);
GEHandler_ = std::make_shared<GameEventHandler>(GOManager_);
中的pip install PyBoard
要求absolute server URL使用域,但这使后端应用无法识别用户真正访问过的域。有没有一种方法可以根据实际请求使用动态URL配置HttpLink
或使用相对URL或其他任何方法?
答案 0 :(得分:0)
使用Apollo链接拦截查询并在上下文中设置uri属性
const authMiddleware = setContext((operation, { uri }) => {
return refreshToken().then(res => ({
uri: this.getURI()
})
}))
或者使用Angular的HttpClient拦截器拦截请求并更改端点。
答案 1 :(得分:0)
在服务器端调用时,传递给NextPageContext
的{{1}}对象包括getInitialProps
对象。因此,您可以执行以下操作:
req
然后您可以将此基本URL连同初始状态一起传递到WithApollo.getInitialProps = async ctx => {
const { AppTree, req } = ctx
const linkBaseUrl = req ? req.protocol + '://' + req.get('host') : ''
...
}
,并在其前面加上HttpLink的URL。在客户端,这将在一个空字符串之前(您只需要服务器上的完整URL)。