DART中的客户端与PHP中的服务器通信:访问控制允许缺少原始标头

时间:2014-03-15 13:41:46

标签: php client-server dart

这是我的客户:

  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 dartCORS 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;到响应中

1 个答案:

答案 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"