【问题标题】:CORS error when using HttpRequest.getString(url)使用 HttpRequest.getString(url) 时出现 CORS 错误
【发布时间】:2016-07-27 23:21:46
【问题描述】:

整个应用程序是用Angular 2Dart 构建的。

在一个地方,我有一个非常天真的 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, *”,但只允许一个值。因此,不允许访问 Origin 'http://localhost:8080'。


我没有得到与Postman 相同的结果,但是:


根据我从源代码中读出的内容,Dart itself concatenates duplicate headers into just one,但我找不到关于那个额外的 CORS 标头的任何信息。

【问题讨论】:

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


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-01-12
      • 2017-09-23
      • 2017-11-30
      • 1970-01-01
      • 2021-09-21
      • 2021-05-09
      • 2021-12-13
      • 2021-08-14
      相关资源
      最近更新 更多