将Axios与Slack API一起使用时发生CORS问题

Ove*_*ked 3 slack-api axios

我正在从浏览器使用axios来与Slack webhook API交互。发送帖子时,我尝试使用

axios.post(url, data)
Run Code Online (Sandbox Code Playgroud)

浏览器/ axios将OPTION请求发送到后端。OPTION请求中包含的是

access-control-request-headers:content-type
Run Code Online (Sandbox Code Playgroud)

但是,Slack的回应有

access-control-allow-origin:*
Run Code Online (Sandbox Code Playgroud)

但没有access-control-allow-headers头。这导致浏览器/ XMLHttpRequest抱怨

Request header field Content-Type is not allowed by Access-Control-Allow-Headers in preflight response.
Run Code Online (Sandbox Code Playgroud)

似乎一种解决方案是在这种情况下告诉axios不要发送内容类型的标头,但是我不知道该怎么做。

谢谢。

Min*_*ing 6

基本上,您需要删除内容类型标头,这只能通过一种怪诞的方式来实现:

const url = 'https://hooks.slack.com/services/{YOUR_WEBHOOK}'
const data = {
  "text": "yo some text",
}
axios.post(url, JSON.stringify(data), {
  withCredentials: false,
  transformRequest: [(data, headers) => {
    delete headers.post["Content-Type"]
    return data
  }]
})
Run Code Online (Sandbox Code Playgroud)