1

我正在使用 slim 框架 v4 来构建 API。我发现使用自定义标题根本不起作用。我将不胜感激解决此问题的任何线索。

我已按照https://www.slimframework.com/docs/v4/cookbook/enable-cors.html上的文档进行操作,但这无法解决问题。

我在 Apache 上设置了一些配置

标头始终设置 Access-Control-Allow-Origin "*" 标头始终设置 Access-Control-Allow-Headers "Custom-Token"

<script>
  axios({
    method: 'get',
    url: 'http://localhost:8080/income/',
    headers: {
      'Content-Type': 'application/json',
      'Custom-Token': 'vvvv',
      'Access-Control-Allow-Headers': 'Custom-Token'
    },
    responseType: 'json'
  })
    .then(function (response) {
      console.log(response);
    }).catch(error => console.log(error));
</script>

以上来自域a,想从域b获取资源

我在 'http://localhost:8080/income/' 获得了对来自原点'http://localhost:8020' 的 XMLHttpRequest 的访问权限已被 CORS 策略阻止:访问控制不允许请求标头字段自定义令牌 -预检响应中的允许标头。

4

1 回答 1

1

我通过从 PHP 端设置自定义标头解决了这个问题

header('Access-Control-Allow-Origin: *');
header('Access-Control-Allow-Headers: Origin, X-Requested-With, Content-Type, Accept, Custom-Token');

更重要的是,在预检响应之前回显文本

$app->options('/{routes:.*}', function (Request $request, Response $response) {
        // CORS Pre-Flight OPTIONS Request Handler
        echo "OK!";

        return $response;
    });
于 2021-10-27T11:27:10.283 回答