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

时间:2019-02-11 12:18:40

标签: angular symfony

当我向api symfony4发送发布请求时出现此错误。我使用fosrestBundle创建api,使用nelmioCrosBundle纠正错误cro,但我也遇到此错误:

  

CORS策略已阻止从来源“ http://localhost:8000/api/user/upload”访问“ http://localhost:4200”处的XMLHttpRequest:请求的资源上没有“ Access-Control-Allow-Origin”标头。

代码配置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()));
    }

我不仅使用代理而且还使用错误,并且我还创建了侦听器来设置标头以作为响应,但是同时也存在错误..如何解决此错误..

4 个答案:

答案 0 :(得分:0)

尝试在Access-Control-Allow-Origin数组中添加allow_headers

答案 1 :(得分:0)

OPTIONS添加到allow_methods

答案 2 :(得分:0)

后端不允许

“授权”标头。在您的Symfony应用程序中,您必须设置一个包含以下内容的响应标头:

Access-Control-Allow-Headers : 'Content-Type', 'Authorization'

检查此链接:https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Access-Control-Allow-Headers

答案 3 :(得分:0)

如果您只想玩捆绑游戏,不需要CORS,则可以使用此chrome extension将其禁用。启用的扩展程序将显示绿色图标,因此您可以取消选中Enable cross-origin sharing