我在试着摆弄颤动的网。我尝试使用http包将我创建的一个简单的flutter web应用程序连接到mysql数据库和localhost。但是,我没有得到请求方法返回的任何数据。当我试图打印出snaphot.error时,我得到了这个:XMLHttpRequest error。我在FutureBuilder()中有这个方法
getMethod()async{
String theUrl = 'https://localhost/fetchData.php';
var res = await http.get(Uri.encodeFull(theUrl),headers: {"Accept":"application/json"});
var responsBody = json.decode(res.body);
print(responsBody);
return responsBody;
}发布于 2019-11-11 06:13:59
你也可以像这样将下面的代码添加到你的php文件中:
<?php
require('connection.php');
header("Access-Control-Allow-Origin: *");
....
code goes here
....
?>我在LocalHost上试过了,它起作用了。
注意:如果您使用的是nodejs,请安装cors()包并使用如下命令
var express = require('express')
var app = express()
var cors = require('cors')
app.use(cors())发布于 2019-05-15 17:20:50
我自己也被这个错误给绊倒了。你正在与CORS发生冲突...如果跟踪底层网络流量,应该会看到它首先发送了一个OPTIONS请求。
要让它暂时“工作”,你可以启动Chrome并关闭CORS。显然,这不是一个长期的解决方案,但它应该会让你继续前进。您需要的命令是:
open /Applications/Google\ Chrome.app --args --disable-web-security --user-data-dir发布于 2020-01-01 19:24:09
我发现并解决了这个问题
要访问由flutter创建的网站,基本上您需要调用一个JS脚本
对于任何允许访问脚本的网站(在我的例子中是访问api的另一个网站),您需要提供某种许可才能访问
在本例中是CORS -跨域资源共享
将以下代码添加到您的网站.htaccess文件中
<ifModule mod_headers.c>
SetEnvIf Origin "http(s)?://(www.)?(localhost:55538|somedomain.com)$" AccessControlAllowOrigin=$0
Header add Access-Control-Allow-Origin %{AccessControlAllowOrigin}e env=AccessControlAllowOrigin
Header always set Access-Control-Allow-Methods: "GET,POST,PUT,DELETE,OPTIONS"
</ifModule> 添加此现在将授予对flutter网站的访问权限,以点击对apis的请求
https://stackoverflow.com/questions/56139505
复制相似问题