这是我的客户:
import 'dart:html';
void main() {
var request = new HttpRequest();
request.open('post','http://127.0.0.1/dartphp/index.php',async: true);
request.send("some data");
}
和我的服务器:
<?php header("Access-Control-Allow-Origin: http://127.0.0.1:3030");
header("Access-Control-Allow-Methods: POST, GET, OPTIONS");
?>
<html><body>
<?php
echo "postback";
echo "<pre><br>post<br>";
echo $HTTP_RAW_POST_DATA;
echo "</pre><br>";
?>
</body></html>
我在3030上在Dartium中执行dart,并在80上监听Apache。我得到的错误是:XMLHttpRequest无法加载http://127.0.0.1/dartphp/index.php
。请求的资源上没有'Access-Control-Allow-Origin'标头。因此,不允许访问源' http://127.0.0.1:3030
'。
我读了文章发送数据之间的php和dart和CORS与dart,我如何让它工作?但在此期间,语法已经改变或解决方案不适用于我的问题,
第一个on.readyStateChange。add'不存在
第二个'request.response.headers。add'是不可能的,因为'response'没有'headers'定义
需要更改什么,以便可以'request.onReadyStateChange.listen((_)'到响应
服务器需要添加Access-Control-Allow-Origin
标头,而不是客户端
您的页面最初从http://127.0.0.1:3030
加载,然后想要访问http://127.0.0.1/dartphp/index.php
,这被认为是一个不同的域。
客户端向服务器发送一个请求,以检查它是否响应一个Access-Control-Allow-Origin
头符合客户端起源(*
作为通配符),在此之后实际的请求被发送。
尝试设置以下标头
"Access-Control-Allow-Origin", "http://127.0.0.1:3030"
"Access-Control-Allow-Methods", "POST, GET, OPTIONS"