我目前正在与Ionic一起从API获取数据。尽管最近几天一直在工作,但我不知道它是如何停止工作的。
我正在使用@angular/http
发出请求。不使用任何标题时,我的请求将转到GET
方法,并且由于我需要授权令牌而无法使用。
但是,如果我通过以下方式获得标题:
let headers = new Headers();
headers.append('Authorization', this.bearerToken);
let options = new RequestOptions({ headers: headers });
它也不起作用。该请求转到OPTIONS
方法,并返回:
Unauthorized header authorization
我可以在Ionic上做些什么来解决此问题,还是应该警告API开发人员以使其做出一些更改?
编辑:API开发人员正在使用Symfony和Nelmio CORS捆绑软件来处理这些设置
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:
'^/': ~
如@Moshe所提到的,它们的配置应包含一些Access-Control-Allow-Headers
,并且显然可以。.
答案 0 :(得分:1)
当涉及到HTTP标头(例如授权)时,客户端发送一个OPTIONS
请求,以检查标头是否首先被服务器接受。我的客户-服务器关系也遇到了类似的问题。您必须在服务器的Access-Control-Allow-Header中启用授权。
示例:
header('Access-Control-Allow-Headers: Content-Type, Authorization');