【发布时间】:2020-06-12 21:31:55
【问题描述】:
我有一个大问题让我的项目迟到了我有 CROS 问题阻止我的请求我无法纠正它,我在我的 .htacess 中添加了下面的行,但它不起作用我不能'没看懂
跨源请求被阻止:同源策略不允许读取位于https://maps.googleapis.com/maps/api/place/autocomplete/json...nents=country:fr&key=MY_KEY 的远程资源。 (原因:缺少 CORS 标头“Access-Control-Allow-Origin”)
RewriteEngine On
RewriteCond %{SERVER_PORT} 80
RewriteRule ^(.*)$ https://www.kosmos-digital.com/$1 [R,L]
Rewritecond %{HTTP_HOST} ^kosmos-digital.com$
Rewriterule ^(.*) https://www.kosmos-digital.com/$1 [QSA,L,R=301]
<ifModule mod_headers.c>
SetEnvIf Origin "http(s)?://(www.kosmos-digital.com|www.maps.googleapis.com)$" AccessControlAllowOrigin=$0
Header add Access-Control-Allow-Origin %{AccessControlAllowOrigin}e env=AccessControlAllowOrigin
Header always set Access-Control-Allow-Methods: "GET,POST,OPTIONS,DELETE,PUT"
</ifModule>
我不认为它来自我的代码,但我会把它放在下面:
try {
await Dio().get<String>("https://maps.googleapis.com/maps/api/place/autocomplete/json?input=28%20avenue%20pierre%20corneille&language=fr&components=country:fr&key=MY_KEY").then((e) {
print(e.data);
}).catchError(print);
// Map<String, dynamic> dataAsJson = await HttpUtils.getForJson(url, headers: headers);
// print(dataAsJson.toString());
} catch(e) {
print(e.toString());
}
【问题讨论】:
-
我无法从 Flutter Web 进行调用...我唯一的选择是创建一个 Firebase 函数并将数据发送到 Firestore 以供使用。
-
嗨@dafep,你设法让它工作了吗?由于项目的一些限制,我无法真正制作 Firebase 函数
-
这里有同样的问题。这对于需要尽快解决的 Flutter-web 开发人员来说是个遗憾。
-
您能否检查一下您的 API 密钥是否有任何限制,例如:youtu.be/2_HZObVbe-g
-
cors 标头完全由 Google API 服务器控制。您的浏览器会读取这些标头并决定是否让您的应用使用响应。它不是由您的应用程序而是由浏览器控制的,因此您在 Flutter 端无能为力,只能在您的项目中配置 API 设置。
标签: flutter dart flutter-web