我有一个 Linux 服务器。我有两个 Docker 容器。在第一个容器中,我部署 Flutter Web,在另一个容器中,我使用 FastAPI() 运行 RestAPI。
我将两个 Docker 容器设置在同一个网络中,因此通信应该可以正常工作。我还设置了起源origins = ['*']
(通配符)。我反向代理我的 Flutter 网络nginx
来自 Linux 服务器。我还包括*.crt
and *.key
使用 nginx 到我的 Flutter Web。
现在,显然,因为我的 Flutter Web 应用程序已经https
,我做不到http
来电。当我尝试拨打电话时https
,我得到错误(来自 catch):"XMLHttpRequest error"
,在浏览器控制台中我得到:
跨源请求被阻止:同源策略不允许读取
远程资源位于https://172.21.0.2:8070/。 (原因:CORS 请求
没有成功)。状态代码:(空)。
(172.21.0.2是Docker的ip,8070是RestApi运行的端口)
我是 RestAPI 世界的新手。我通常只开发前端。但我想尝试一下。所以,如果我表达了一些错误的话,我很抱歉。我几天来一直在寻找,但找不到解决我的问题的方法。我将不胜感激任何帮助! (如果我遗漏了一些信息或者您需要更多信息,请随时在评论中写下,我会立即更新问题!)
谢谢你!
我解决了我的问题。如果将来有人遇到同样的问题,这里就是答案。
我的错误是调用服务器http
/https
,同时在同一个(Docker)网络中。所以我改变了:
final Uri tokenUri = Uri.https(urlList[index]['url']!, '');
to
final Uri tokenUri = Uri.parse('${urlList[index]['url']!}/');
花了一周的时间寻找这样一个简单的解决方案。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)