我正在调试 Drupal 问题,它被用作 headless api 服务器。
当有人在 JavaScript 应用程序中提交表单时,我必须向 Drupal 的联系表单 REST 端点发出 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']
最佳答案
将文件名从 default.services.yml
更改为 services.yml
。
另外,exportedHeaders 属性应该是 header 名称数组,或者为 false,但绝不能为“true”。
来源:https://www.drupal.org/node/2715637
关于javascript - 在 Drupal 中启用和配置 cors,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48258960/