Symfony 由于访问控制检查,Safari-XMLHttpRequest无法加载X。[检查员] 情况:
每当您在Safari中访问此URL并查看控制台时,都会出现有关Symfony 由于访问控制检查,Safari-XMLHttpRequest无法加载X。[检查员] 情况:,symfony,ssl,safari,xmlhttprequest,api-platform.com,Symfony,Ssl,Safari,Xmlhttprequest,Api Platform.com,每当您在Safari中访问此URL并查看控制台时,都会出现有关XMLHttpRequest和访问控制检查的错误 奇怪的是,当我打开开发工具并重新加载页面时,它工作正常 有人能解释一下为什么它与开发人员工具一起工作吗。是什么导致了这个问题 资料: 该项目由一个Angular前端(nvm.samengroen.com)和一个API平台
XMLHttpRequest
和访问控制检查的错误
奇怪的是,当我打开开发工具并重新加载页面时,它工作正常
有人能解释一下为什么它与开发人员工具一起工作吗。是什么导致了这个问题
资料:
该项目由一个Angular
前端(nvm.samengroen.com)和一个API平台
后端(brokerapi.samengroen.com)组成。它们都在同一个通配符SSL证书上,我发现这可能是答案,但是登录和查看从API获取数据的其他页面没有任何问题
我们还在.env
文件中尝试了这一点,但没有任何结果:
###> nelmio/cors-bundle ###
CORS_ALLOW_ORIGIN=^https?://.*?$
###< nelmio/cors-bundle ###
似乎它确实与SSL证书和可能的通配符有关。请在配置中的
nelmio_cors.yaml
中添加此配置
nelmio_cors:
defaults:
origin_regex: true
allow_origin: ['*']
allow_methods: ['GET', 'OPTIONS', 'POST', 'PUT', 'PATCH', 'DELETE']
allow_headers: ['Content-Type']
expose_headers: ['Link']
max_age: 3600
paths:
'^/api/':
allow_origin: ['*']
allow_headers: ['*']
allow_methods: ['OPTIONS','POST', 'PUT', 'GET', 'DELETE', 'PATCH']
max_age: 3600
这里我们也允许选项
请求
注意:我假设所有路由的所有api的前缀都是/api/
无法在firefox/chrome中复制注销状态下的错误消息。(ff与blocked google tag manager)不,这是正确的,错误只出现在
safari
中。由于您的cors\u allow\u来源的regexp没有任何限制,请改用*
。说明如果指定的不是*
,则可能需要添加更多的标题。您是否也检查了手动定制的选项
请求以查看返回的标题?是的,我们以前有*
,但这不起作用。我觉得这样问很愚蠢,但是你怎么能手动执行选项
请求呢?尽管链接的脚本应该修改很多,但是你可以使用更多的资源:通常飞行前请求会失败(甚至可能不会显示在网络控制台中)。我们配置中的唯一区别是路径允许\ u头设置为['Authorization'、'X-Requested-With'、'Content-Type'、'Accept'、'Origin'、'X-Custom-Auth']
而不是*
。我可以试一试。
nelmio_cors:
defaults:
origin_regex: true
allow_origin: ['*']
allow_methods: ['GET', 'OPTIONS', 'POST', 'PUT', 'PATCH', 'DELETE']
allow_headers: ['Content-Type']
expose_headers: ['Link']
max_age: 3600
paths:
'^/api/':
allow_origin: ['*']
allow_headers: ['*']
allow_methods: ['OPTIONS','POST', 'PUT', 'GET', 'DELETE', 'PATCH']
max_age: 3600