整个应用程序使用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
我得不到同样的结果:
从我可以从源代码中读出来的Dart
itself concatenates duplicate headers into just one,但我找不到有关额外CORS头的任何信息。
答案 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,因此会失败。所以我只是评论说代码阻塞了,现在一切正常。