这是我的客户:
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并让Apache在80上进行侦听。
我得到的错误是:
XMLHttpRequest无法加载http://127.0.0.1/dartphp/index.php
。 No&#39; Access-Control-Allow-Origin&#39;标头出现在请求的资源上。起源&#39; http://127.0.0.1:3030
&#39;因此不允许访问。
我阅读了文章Send data between php and dart和CORS with Dart, how do I get it to work? 但在此期间语法已更改或解决方案不适用于我的问题,
第一个&#39; on.readyStateChange.add&#39;不再存在
第二个请求.response.headers.add&#39;是不可能的,因为&#39;回应&#39;没有&#39;标题&#39;定义
必须更改的内容,以便可以请求.onReadyStateChange.listen((_)&#39;到响应中
答案 0 :(得分:2)
服务器需要添加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"