我试图使用React和axios向slack api发送消息,由于一些未知原因,我收到了CORS政策错误。
export const sendMessage = data => dispatch => {
console.log(data);
const message = {
channel: data.currentChannelId,
text: data.text
};
const token =
"MY_TOKEN";
const config = {
"Content-Type": "application/json",
"Authorization": `Bearer ${token}`
};
axios
.post("https://slack.com/api/chat.postMessage", JSON.stringify(message), config)
.then(res => {
console.log(res);
dispatch({
type: actionTypes.SEND_MESSAGE,
payload: data
});
})
.catch(err =>
dispatch({
type: actionTypes.SEND_MESSAGE,
payload: {}
})
);
};
我检查了这里提出的很多问题,并联系了slack的支持人员,并收到了以下消息:
我们已经看到,通过确保开发人员能够 没有发送任何标头及其请求?这可能导致 我们这是预检错误。
您可以尝试看看是否有帮助?
当然,不发送任何标头是不可能的,因为我们也在标头中发送授权。
我尝试仅删除"Content-Type": "application/json"
,然后再次发生相同的错误。我也尝试将其更改为"Content-Type": "application/x-www-form-urlencoded"
在两种情况下都不会发生任何变化。 我收到此错误:
访问“ https://slack.com/api/chat.postMessage”处的XMLHttpRequest 来自来源“ http://localhost:3000”的信息已被CORS政策阻止: 请求标头字段的内容类型不允许 飞行前响应中的Access-Control-Allow-Header。
尽管还有很多其他问题,并且可能是重复的,但是没有一个答案适合我的问题。
答案 0 :(得分:2)
从您的请求中删除Content-Type
标头。 Slack的API端点不发送Access-Control-Allow-Headers
响应,因此预检失败。