javascript - SailsJS 自定义 API Hook - 子域

标签 javascript regex amazon-web-services sails.js

我最近尝试将 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 channel 和 Gitter.im 链接上询问,但我的疑问“迷失在噪音中”,所以我想我只是在这里询问并留待讨论。有没有更好的方法来处理这个问题?

使用 URL http://ec2-xxx-xxx-xxx-xxx.locale-x.compute.amazonaws.com 在 AWS 环境中部署或者只是通过 IP 地址访问都被所使用的正则表达式捕获:

/^([^\.]+)\./

这使得部署变得非常困难,除非应用程序位于站点的根路由中(哈哈)。难道就没有其他方法可以解决这个问题吗?

现在,我必须将其注释掉,以便我的分阶段应用程序可用/可测试。我还意识到,这可能是通过最初通过 sails-generate 创建我的项目时传递的参数来呈现的。项目,但我还没有找到它

最佳答案

我遇到了同样的问题。似乎我们都曾使用过生成器,导致代码包含上面的正则表达式。现在它已通过此提交进行了更改,一旦您将存储库中的代码更改为下面的代码,它实际上就会再次起作用!

https://github.com/balderdashy/sails-generate/commit/76e2096d8173d474b6152a67ff4cfa08c38e6460

关于javascript - SailsJS 自定义 API Hook - 子域,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53664387/

相关文章:

javascript - 如何在本地运行node.js应用程序进行开发

java - 用于提取带有可选点的前面数字的正则表达式

javascript - 使用正则表达式获取双花括号内的值

amazon-web-services - AWS Lex : How to display a welcome message when first opened?

amazon-s3 - Windows Azure 和 Amazon Elastic Compute Cloud 有什么区别?

javascript - 解构但也返回源对象

javascript - typescript parseInt 没有按预期工作,收到 NaN

javascript - 使用 Jasmine 2 测试 Promise.then

PHP-MySQL cronjob发送邮件循环重复

c# - 如何编写正则表达式来捕获没有链接文本的链接?