我正在从浏览器使用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不要发送内容类型的标头,但是我不知道该怎么做。
谢谢。
基本上,您需要删除内容类型标头,这只能通过一种怪诞的方式来实现:
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)
归档时间: |
|
查看次数: |
2416 次 |
最近记录: |