javascript - Ionic Service Worker 发送 GET 选项

标签 javascript ionic-framework cors service-worker

我目前正在使用 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/

相关文章:

jquery - jquery来自CDN时,ajax调用是否跨域?

javascript - 使用 lodash 将对象数组排序为 Top N,其中 n+1 为 "others"

javascript - 是否有任何理由使用动态创建的 <script> 标记而不是 eval() 来解决问题?

javascript - jQuery:如何禁用 div 中的所有内容?但仍然保持一切可见?

android - Android 目标 API 级别 28+ 后出现错误 “Google is not defined””

css - ionic 导航栏中的背景颜色不变

angularjs - $cordovaSQLite.execute 不是 ionic 中的函数

angular - 使用 Angular 向 facebook oauth 发送 CORS 问题

Javascript 正则表达式使用 ñ 字符验证电子邮件

Spring Data REST CORS - 如何处理预检选项请求?