首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在Flutter Web中进行HTTP请求

如何在Flutter Web中进行HTTP请求
EN

Stack Overflow用户
提问于 2019-05-15 06:36:12
回答 3查看 19.4K关注 0票数 18

我在试着摆弄颤动的网。我尝试使用http包将我创建的一个简单的flutter web应用程序连接到mysql数据库和localhost。但是,我没有得到请求方法返回的任何数据。当我试图打印出snaphot.error时,我得到了这个:XMLHttpRequest error。我在FutureBuilder()中有这个方法

代码语言:javascript
复制
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;

}
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2019-11-11 06:13:59

你也可以像这样将下面的代码添加到你的php文件中:

代码语言:javascript
复制
<?php
require('connection.php');
header("Access-Control-Allow-Origin: *");
....
code goes here
....
?>

我在LocalHost上试过了,它起作用了。

注意:如果您使用的是nodejs,请安装cors()包并使用如下命令

代码语言:javascript
复制
var express = require('express')
var app = express()
var cors = require('cors')

app.use(cors())

查看CORS package on npmjs

票数 7
EN

Stack Overflow用户

发布于 2019-05-15 17:20:50

我自己也被这个错误给绊倒了。你正在与CORS发生冲突...如果跟踪底层网络流量,应该会看到它首先发送了一个OPTIONS请求。

要让它暂时“工作”,你可以启动Chrome并关闭CORS。显然,这不是一个长期的解决方案,但它应该会让你继续前进。您需要的命令是:

代码语言:javascript
复制
open /Applications/Google\ Chrome.app --args --disable-web-security --user-data-dir
票数 3
EN

Stack Overflow用户

发布于 2020-01-01 19:24:09

我发现并解决了这个问题

要访问由flutter创建的网站,基本上您需要调用一个JS脚本

对于任何允许访问脚本的网站(在我的例子中是访问api的另一个网站),您需要提供某种许可才能访问

在本例中是CORS -跨域资源共享

将以下代码添加到您的网站.htaccess文件中

代码语言:javascript
复制
<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的请求

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56139505

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档