2 回答
TA贡献1828条经验 获得超3个赞
看来你使用cors方法不对。您还应该使用提供的返回任何值response。详细信息请查看下面。
const cors = require('cors')({origin: true});
exports.sendMessage = functions.https.onRequest((request, response) => {
return cors(request, response, async () => {
try {
const res = await Axios.post(
`https://hooks.slack.com/services/*XXXXXXXXXXXXX*`,
{
blocks: [
{
type: 'section',
text: {
type: 'mrkdwn',
text: 'hello',
},
},
],
},
);
response.status(res.status).json(res.data);
} catch (error) {
response.status(400).json(error);
}
});
});
TA贡献1811条经验 获得超5个赞
实现此目的的方法是将标题“Content-Type”:“application/x-www-form-urlencoded”添加到帖子中。您可以使用您提供的代码来执行此操作:
const cors = require('cors')
const functions = require('firebase-functions')
const Axios = require('axios')
exports.sendMessage = functions.https.onRequest((request, response) => {
return cors()(request, response, () => {
return Axios.post(
`https://hooks.slack.com/services/*XXXXXXXXXXXXX*`,
{
blocks: [
{
type: 'section',
text: {
type: 'mrkdwn',
text: 'hello',
},
},
],
},
{
headers: {
"Content-Type": "application/x-www-form-urlencoded",
},
}
)
})
})
Slack API 似乎不能很好地处理常规 JSON,这是 Axios 的默认设置,因此这就是需要更改的原因。
希望这能帮您解决这个问题!
添加回答
举报