使用 HttpRequest.getString(url) 时出现 CORS 错误
CORS error when using HttpRequest.getString(url)
整个应用程序是用 Angular 2
为 Dart
构建的。
在一个地方,我有一个服务,它有一个非常简单的 HttpRequest.getString()
调用,没有特殊参数或任何东西。
String response = await HttpRequest.getString(url);
在服务器端有一个 Wordpress
安装 WP-API
运行。
似乎 Dart
正在为当前加载的主机名创建 新响应 header,因为我收到此错误:
XMLHttpRequest cannot load http://my-wordpress/wp-json/wp/v2/pages.
The 'Access-Control-Allow-Origin' header contains multiple values 'http://localhost:8080, *', but only one is allowed. Origin 'http://localhost:8080' is therefore not allowed access.
我没有得到与 Postman
相同的结果,但是:
根据我可以从源代码中读取的内容,Dart
itself concatenates duplicate headers into just one,但是我找不到关于那个额外的 CORS 的任何信息 header。
我可以通过注释掉 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,所以这将失败。所以我只是评论说代码被屏蔽了,现在一切正常。
整个应用程序是用 Angular 2
为 Dart
构建的。
在一个地方,我有一个服务,它有一个非常简单的 HttpRequest.getString()
调用,没有特殊参数或任何东西。
String response = await HttpRequest.getString(url);
在服务器端有一个 Wordpress
安装 WP-API
运行。
似乎 Dart
正在为当前加载的主机名创建 新响应 header,因为我收到此错误:
XMLHttpRequest cannot load http://my-wordpress/wp-json/wp/v2/pages.
The 'Access-Control-Allow-Origin' header contains multiple values 'http://localhost:8080, *', but only one is allowed. Origin 'http://localhost:8080' is therefore not allowed access.
我没有得到与 Postman
相同的结果,但是:
根据我可以从源代码中读取的内容,Dart
itself concatenates duplicate headers into just one,但是我找不到关于那个额外的 CORS 的任何信息 header。
我可以通过注释掉 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,所以这将失败。所以我只是评论说代码被屏蔽了,现在一切正常。