当用户提交联系表单时,我的 Flutter Web 应用需要调用 API。API 是一个不和谐机器人的 API,它继续在我的不和谐服务器上的特定频道中发布消息。此设置适用于使用相同依赖项和相同生产环境(Firebase 托管)的其他两个应用程序,但在此特定应用程序上会引发以下错误:
从源“https://autonet.tk”访问“https://discordapp.com/api/channels/689799838509957177/messages”的 XMLHttpRequest 已被 CORS 策略阻止:对预检请求的响应未通过访问控制检查:请求的资源上不存在“Access-Control-Allow-Origin”标头。
如果我将标头添加'Access-Control-Allow-Origin': '*'
到请求中,我只会得到一个XMLHttpRequest error
我的代码:
import 'package:http/http.dart' as http;
var resp = await http.post(
"https://discordapp.com/api/channels/689799838509957177/messages",
headers: {
'Authorization': "Bot " + botToken,
},
body: {
"content": "NEW MESSAGE: " + body
});
更难对根本原因进行三角测量是因为它在我的本地机器上运行良好。只有在我将应用程序部署到 Firebase 托管时,我才会收到 CORS 错误。另一件值得注意的事情是,在 Discord 方面,我无需进行任何配置即可接受其他两个使用相同代码运行良好的 Web 应用程序的传入请求。(没有允许的主机列表)。