我目前正在使用 Ionic 从 API 获取数据。虽然这几天一直在工作,但我不知道它怎么停止工作了。
我正在使用@angular/http
来提出我的请求。当不使用任何 header 时,我的请求将转到 GET
方法,并且不起作用,因为我需要授权 token 。
但是,如果我通过以下方式获得标题:
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 Bundle 来处理这些设置
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
,而且他们显然确实这样做了..
最佳答案
当涉及到 HTTP header (例如授权)时,客户端会发送一个 OPTIONS
请求,以检查服务器是否首先接受 header 。我的客户端-服务器关系也遇到了类似的问题。您必须在服务器的 Access-Control-Allow-Headers 中启用授权。
示例:
header('Access-Control-Allow-Headers: Content-Type, Authorization');
关于javascript - Ionic Service Worker 发送 GET 选项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51386743/