Symfony Angular 请求的资源上不存在'Access-Control-Allow-Origin'标头



当我向 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

相关内容

最新更新