我想把头发拉出来;这要么超级简单,我的大脑冻结了,要么没那么简单。
我想要的是
当用户转到以下位置时,我正在尝试使用 Firebase 缩短缩短的 URL:
myapp.firebaseappurl.com/url/SHORTENEDLINK
所以不会让我添加缩短的 URL
我希望输出为:
{
"url": "https://stackoverflow.com/questions/45420989/sphinx-search-how-to-use-an-empty-before-match-and-after-match"
}
我试过的
firebase.json
文件:
{
"hosting": {
"public": "public",
"rewrites": [ {
"source": "/url/:item",
"destination": "/url/:item"
} ]
}
}
index.js
文件:
const functions = require('firebase-functions');
exports.url = functions.https.onRequest((requested, response) => {
var uri = requested.url;
request({
uri: uri,
followRedirect: true
},
function(err, httpResponse) {
if (err) {
return console.error(err);
}
response.send(httpResponse.headers.location || uri);
}
);
});
结果
当我去 myapp.firebaseappurl.com/url/SHORTENEDLINK
我得到以下信息:
Error: could not handle the request
原文由 JamesG 发布,翻译遵循 CC BY-SA 4.0 许可协议
您看到的是
Error: could not handle the request
因为可能出现异常并且超时。使用以下命令检查您的日志:
有关更多详细信息,请参阅 文档
这是我如何让 URL unshortening 工作
您可以直接按照 hello world 示例并使用上面的代码作为您的
function
。上面的代码使用
HEAD
请求查看标头的“Location”字段并决定是否可以进一步缩短 url。这更轻,因为 HEAD 请求不要求任何主体(从而避免主体解析)。此外,不需要第三方库!
另请注意,url 作为查询参数传递。所以要求是
省去了重写 URL 的麻烦。另外在语义上更有意义。