使用HttpRequest.getString(url)

时间:2016-07-27 23:21:47

标签: wordpress dart angular-dart dart-html wp-api

整个应用程序使用Angular 2构建Dart

在某个地方,我提供的服务非常简单HttpRequest.getString(),没有特殊参数或任何内容。

String response =  await HttpRequest.getString(url);

在服务器端,有一个Wordpress安装,WP-API正在运行。

似乎Dart正在以某种方式为当前加载的主机名创建新的响应标头,因为我收到此错误:

  

XMLHttpRequest无法加载http://my-wordpress/wp-json/wp/v2/pages

     

“Access-Control-Allow-Origin”标头包含多个值“http://localhost:8080,*”,但只允许一个。因此,不允许原点“http://localhost:8080”访问。

Postman我得不到同样的结果:

  

enter image description here

从我可以从源代码中读出来的Dart itself concatenates duplicate headers into just one,但我找不到有关额外CORS头的任何信息。

1 个答案:

答案 0 :(得分:0)

我可以通过评论Wordpress具体的REST-API代码来解决这个问题。 在文件夹wp-includes中有一个名为rest-api.php的文件。

在第376行上方,您会看到类似这样的内容:

header( 'Access-Control-Allow-Origin: ' . esc_url_raw( $origin ) );
header( 'Access-Control-Allow-Methods: POST, GET, OPTIONS, PUT, DELETE' );
header( 'Access-Control-Allow-Credentials: true' );

这似乎允许请求的主机访问API。但由于我已经将*添加为Origin,因此会失败。所以我只是评论说代码阻塞了,现在一切正常。