当我向 api symfony4 发送帖子请求时,我遇到了此错误。我使用 fosrestBundle 创建 api 和 nelmioCrosBundle 来纠正错误 cros,但我也有这个错误:
CORS 策略已阻止从源"http://localhost:4200"访问"http://localhost:8000/api/user/upload"处的 XMLHttpRequest:请求的资源上不存在"访问控制允许源"标头。
代码配置 nelmio:
nelmio_cors:
# defaults:
# origin_regex: true
# allow_origin: ['%env(CORS_ALLOW_ORIGIN)%']
# allow_methods: ['GET', 'OPTIONS', 'POST', 'PUT', 'PATCH', 'DELETE']
# allow_headers: ['Content-Type', 'Authorization']
# max_age: 3600
# paths:
# '^/': ~
paths:
'^/api':
allow_origin: ['*']
allow_headers: ['Authorization', 'Content-Type']
allow_methods: ['GET', 'POST', 'PUT', 'DELETE']
max_age: 3600
这是将数据角度发送到Symfony4的函数:
uploadFiles(test) {
let headers = new Headers({ 'Content-Type': 'application/json',
'Authorization': 'Bearer ' + localStorage.getItem('token') });
console.log(test);
return this._http.post(this.url + '/user/upload',JSON.stringify(test) ,{ headers: headers })
.pipe(map(res => res.json()));
}
我使用代理,但也使用错误,并且我还创建侦听器来设置响应中的标头,但也有错误..如何解决此错误..
将OPTIONS
添加到allow_methods
不允许"授权"标头。在你的Symfony应用程序中,你必须设置一个包含以下内容的响应头:
Access-Control-Allow-Headers : 'Content-Type', 'Authorization'
查看此链接: https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Access-Control-Allow-Headers
如果您只想玩捆绑包并且不需要CORS
您可以使用此 chrome 扩展程序禁用它。已启用的扩展程序将出现一个绿色图标,因此您可以取消选中Enable cross-origin sharing
尝试在数组中添加Access-Control-Allow-Origin
allow_headers