SailsJS 自定义 API 挂钩 - 子域
SailsJS Custom API Hook - Subdomain
我最近尝试将 SailsJS 应用程序部署到 AWS 环境,因此我设置了相关的暂存和生产环境文件。
然而,当我 运行 应用程序具有以下功能时,我一直存在一个问题:
sails lift --staging
我注意到我收到了重复的重定向或者根本无法访问。
经过进一步挖掘,我偶然发现了位于 api/hooks/custom/index.js
文件中的这段代码:
// Next, if we're running in our actual "production" or "staging" Sails
// environment, check if this is a GET request via some other subdomain,
// for example something like `webhooks.` or `click.`. If so, we'll
// automatically go ahead and redirect to the corresponding path under
// our base URL, which is environment-specific.
// > Note that we DO NOT redirect virtual socket requests and we DO NOT
// > redirect non-GET requests (because it can confuse some 3rd party
// > platforms that send webhook requests.)
var configuredBaseSubdomain;
try {
configuredBaseSubdomain = url.parse(sails.config.custom.baseUrl).host.match(/^([^\.]+)\./)[1];
} catch (unusedErr) { /*…*/}
if ((sails.config.environment === 'staging' || sails.config.environment === 'production') && !req.isSocket && req.method === 'GET' && req.subdomains[0] !== configuredBaseSubdomain) {
sails.log.info('Redirecting GET request from `'+req.subdomains[0]+'.` subdomain...');
return res.redirect(sails.config.custom.baseUrl+req.url);
}//•
我试着在 IRC 频道和 Gitter.im 链接上四处询问,但我的查询是 'got lost in the noise' per-say,所以我想我只是在这里问一下并留待讨论。有没有更好的方法来处理这个问题?
在具有 URL http://ec2-xxx-xxx-xxx-xxx.locale-x.compute.amazonaws.com 的 AWS 环境上部署或仅通过 IP 地址访问都被使用的正则表达式捕获:
/^([^\.]+)\./
这使得部署非常困难,除非该应用程序位于站点的根路径(哈哈)中。没有其他方法可以解决这个问题吗?
现在,我不得不将其注释掉,所以我的暂存应用程序是 usable/testable。我还意识到这可能是通过最初通过 sails-generate 项目创建我的项目时传递的参数呈现的,但我还没有追踪到它
我 运行 遇到了同样的问题。似乎我们都同时使用了生成器,导致代码包含上面的正则表达式。现在通过此提交更改了它,一旦您将存储库中的代码更改为下面的代码,它就会再次运行!
https://github.com/balderdashy/sails-generate/commit/76e2096d8173d474b6152a67ff4cfa08c38e6460
我最近尝试将 SailsJS 应用程序部署到 AWS 环境,因此我设置了相关的暂存和生产环境文件。
然而,当我 运行 应用程序具有以下功能时,我一直存在一个问题:
sails lift --staging
我注意到我收到了重复的重定向或者根本无法访问。
经过进一步挖掘,我偶然发现了位于 api/hooks/custom/index.js
文件中的这段代码:
// Next, if we're running in our actual "production" or "staging" Sails
// environment, check if this is a GET request via some other subdomain,
// for example something like `webhooks.` or `click.`. If so, we'll
// automatically go ahead and redirect to the corresponding path under
// our base URL, which is environment-specific.
// > Note that we DO NOT redirect virtual socket requests and we DO NOT
// > redirect non-GET requests (because it can confuse some 3rd party
// > platforms that send webhook requests.)
var configuredBaseSubdomain;
try {
configuredBaseSubdomain = url.parse(sails.config.custom.baseUrl).host.match(/^([^\.]+)\./)[1];
} catch (unusedErr) { /*…*/}
if ((sails.config.environment === 'staging' || sails.config.environment === 'production') && !req.isSocket && req.method === 'GET' && req.subdomains[0] !== configuredBaseSubdomain) {
sails.log.info('Redirecting GET request from `'+req.subdomains[0]+'.` subdomain...');
return res.redirect(sails.config.custom.baseUrl+req.url);
}//•
我试着在 IRC 频道和 Gitter.im 链接上四处询问,但我的查询是 'got lost in the noise' per-say,所以我想我只是在这里问一下并留待讨论。有没有更好的方法来处理这个问题?
在具有 URL http://ec2-xxx-xxx-xxx-xxx.locale-x.compute.amazonaws.com 的 AWS 环境上部署或仅通过 IP 地址访问都被使用的正则表达式捕获:
/^([^\.]+)\./
这使得部署非常困难,除非该应用程序位于站点的根路径(哈哈)中。没有其他方法可以解决这个问题吗?
现在,我不得不将其注释掉,所以我的暂存应用程序是 usable/testable。我还意识到这可能是通过最初通过 sails-generate 项目创建我的项目时传递的参数呈现的,但我还没有追踪到它
我 运行 遇到了同样的问题。似乎我们都同时使用了生成器,导致代码包含上面的正则表达式。现在通过此提交更改了它,一旦您将存储库中的代码更改为下面的代码,它就会再次运行!
https://github.com/balderdashy/sails-generate/commit/76e2096d8173d474b6152a67ff4cfa08c38e6460