我试图使用获取当前网址sails.js.
我尝试了以下方法:
req.param('host') and req.param('X-Forwarded-Protocol')
返回未定义。
req.headers.host
返回本地主机。但我的域不是本地主机。
怎样才能得到呢??
只是为了回答这个问题:没有可靠的跨平台方法来自动检测正在运行的 Sails 应用程序(或任何其他 Node 应用程序)的外部 URL。这getBaseUrl()
下面描述的方法结合使用用户提供的和默认配置值,以最好地猜测应用程序的 URL。在关键任务情况下,建议您预先确定 URL 并将其保存在自定义的 URL 中。依赖于环境的配置值 (e.g. sails.config.appUrl
)您可以在应用程序的其他地方引用。
如果您使用的是 Sails >= v0.10.x,则可以使用sails.getBaseurl()
获取为您的应用程序提供服务的完整协议、域和端口。从 Sails v0.10.0-rc6 开始,这还会检查sails.config.proxyHost
and sails.config.proxyPort
,您可以在您的配置文件之一中手动设置(例如config/local.js
)如果您的应用程序通过代理提供服务(例如,如果它部署在 Modulus.io 上,或通过 Nginx 服务器代理)。
Sails v0.9.x 没有sails.getBaseurl
,但您始终可以尝试复制代码并自己实现,可能是在service:
获取BaseUrl
function getBaseurl() {
var usingSSL = sails.config.ssl && sails.config.ssl.key && sails.config.ssl.cert;
var port = sails.config.proxyPort || sails.config.port;
var localAppURL =
(usingSSL ? 'https' : 'http') + '://' +
(sails.getHost() || 'localhost') +
(port == 80 || port == 443 ? '' : ':' + port);
return localAppURL;
};
你会注意到这依赖于sails.getHost()
,看起来像:
function getHost() {
var hasExplicitHost = sails.config.hooks.http && sails.config.explicitHost;
var host = sails.config.proxyHost || hasExplicitHost || sails.config.host;
return host;
};
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)