0

整个应用程序是用Angular 2for构建的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它本身将重复的标头连接到一个中,但我找不到有关该额外 CORS 标头的任何信息。

4

1 回答 1

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,这将失败。所以我只是评论说代码被屏蔽了,现在一切正常。

于 2016-07-28T00:18:02.067 回答