【问题标题】:Enable and configure cors in Drupal在 Drupal 中启用和配置 cors
【发布时间】:2023-03-30 15:45:01
【问题描述】:

我正在调试一个 Drupal 问题,它被用作无头 api 服务器。

当有人在 JavaScript 应用程序中提交表单时,我必须向 Drupal 的联系表单 REST Endpoint 发出 POST 请求。

当我从 REST 客户端对其进行测试时,API 可以工作。

但是当我在浏览器中从 JavaScript 运行相同的代码时,我遇到了一个 cors 问题。

我已确保在 sites/default/default.services.yml 文件中启用了 cors。

但是更改没有生效。

以下是sites/default/default.services.yml文件的相关内容

  cors.config:
    enabled: true
    # Specify allowed headers, like 'x-allowed-header'.
    allowedHeaders: ['*']
    # Specify allowed request methods, specify ['*'] to allow all possible ones.
    allowedMethods: ['*']
    # Configure requests allowed from specific origins.
    allowedOrigins: ['*']
    # Sets the Access-Control-Expose-Headers header.
    exposedHeaders: true
    # Sets the Access-Control-Max-Age header.
    maxAge: false
    # Sets the Access-Control-Allow-Credentials header.
    supportsCredentials: false

我在浏览器中收到以下错误。

Request header field Content-Type is not allowed by Access-Control-Allow-Headers in preflight response.

我尝试将sites/default/default.services.yml 更改为以下内容,但我仍然遇到同样的问题。

allowedHeaders: ['x-csrf-token', 'authorization', 'content-type', 'accept', 'origin', 'x-requested-with']

【问题讨论】:

    标签: javascript rest drupal cors drupal-8


    【解决方案1】:

    将文件名从default.services.yml更改为services.yml
    此外,exposedHeaders 属性应该是一个标头名称数组,或者为 false,但绝不为“true”。
    源:https://www.drupal.org/node/2715637

    【讨论】:

    • default.services.yml 文件和services.yml 文件有区别吗?
    • 我很确定default.services.yml 只是作为一个例子。与settings.php 的示例相同default.settings.php
    【解决方案2】:

    感谢大家的意见。

    看起来它不起作用的原因是因为 Drupal 安装已经启用了旧的“Drupal Cors”模块,该模块具有优先权。

    一旦我禁用它,我对services.yml 所做的更改就开始起作用了。

    【讨论】:

      猜你喜欢
      • 2012-06-19
      • 2019-12-25
      • 1970-01-01
      • 2019-01-09
      • 2020-01-09
      • 2013-10-19
      • 2018-08-24
      • 2019-06-16
      相关资源
      最近更新 更多