【发布时间】:2017-04-14 18:44:32
【问题描述】:
我在用 Symfony 3 编写的简单 REST API 中使用 NelmioCorsBundle。
在前端,我使用 dropzone.js 上传文件。上传 API 服务器的请求被拒绝,在控制台中我可以看到以下内容:“预检响应具有无效的 HTTP 状态代码 400”。但是,当我使用 CURL 发送完全相同的请求(使用 chrome Copy as cURL 实用程序)时,我得到 200。
虽然返回了 CORS 标头。我可以在我之前提到的回复中看到它们:
Access-Control-Allow-Headers:x-custom-auth
Access-Control-Allow-Methods:POST, PUT, GET, DELETE
Access-Control-Allow-Origin:https://example.com
Access-Control-Max-Age:3600
我无法使用 xdebug 对其进行调试,因为 Chrome 在请求 CORS 时不会发送 cookie。您还有其他想法如何为 CORS 标头启用 xdebug 吗?我可以尝试自己调试。
对于 NelmioCorsBundle,我根据他们的示例使用以下配置:
nelmio_cors:
defaults:
allow_credentials: false
allow_origin:
- '^admin\.project(\.|$)'
- '^subdomain\.project\.(.*\.|)(lab|int|test|prep)\.nds$'
- '~^subdomain\.project\.cz$'
allow_headers: []
allow_methods: []
expose_headers: []
max_age: 0
hosts: []
origin_regex: true
paths:
'^/':
allow_origin: ['*']
allow_headers: ['X-Custom-Auth']
allow_methods: ['POST', 'PUT', 'GET', 'DELETE']
max_age: 3600
最后 - project/var/log/*.log 中没有任何内容。
【问题讨论】: