在Slack api中连接到chat.postMessage的CORS策略错误,设置了标头且未在React和Redux中设置标头

时间:2019-06-14 11:02:36

标签: reactjs redux cors axios slack-api

我试图使用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。

尽管还有很多其他问题,并且可能是重复的,但是没有一个答案适合我的问题。

1 个答案:

答案 0 :(得分:2)

从您的请求中删除Content-Type标头。 Slack的API端点不发送Access-Control-Allow-Headers响应,因此预检失败。