我有一个linux盒子上的meteor,我通过SSH开发到windows笔记本电脑上。对于简单的应用程序,我可以在(windows)浏览器中将lan地址(10.0.1.101:3000)替换为localhost:3000并且它可以正常工作。
但是通过使用oauth w twitter的教程,在开发环境中,似乎流星硬编码ROOT_URL作为localhost并将其发送到twitter.js。即使在dev.twitter.com中我发送回调URL为
,也会发生这种情况http://10.0.1.101:3000/_oauth/twitter?close.
有没有办法在不是localhost的机器上开发?
答案 0 :(得分:20)
您需要在启动meteor之前设置环境变量:
ROOT_URL=http://10.0.1.101:3000 meteor
答案 1 :(得分:0)
对我来说,它可以劫持请求并检查请求主机名,但是对于竞争条件可能不起作用,因为我不知道这是否是过程安全的:
WebApp.rawConnectHandlers.use((req, res, next) => {
var match: any
if(
req.url.startsWith('/_oauth/facebook') &&
(match = req.headers.host.match(/([a-zA-Z0-9-]+)\.domain.com/))
) {
Meteor.absoluteUrl.defaultOptions.rootUrl
= process.env.ROOT_URL
= match[0]
}
next()
})
我的问题是使oauth可在多个域中使用。