android - 使用 AngularFire2 和 Firebase 3 时出现 Ionic 2 应用程序 CORS 错误

标签 android google-chrome cors ionic2 angularfire2

我正在尝试在我的 Ionic 2 应用程序中使用 AngularFire2 插件,以使用自定义 token 对 Google api 进行授权,同时在我的计算机上的 Chrome 中进行开发。它在我的 Android 手机上测试它运行良好,请求有效,一切正常。但我试图让它在我的开发环境中也能工作。

我在 Chrome 中运行我的应用程序时遇到的错误是(我删除了我的 key ):

OPTIONS https://www.googleapis.com/identitytoolkit/v3/relyingparty/verifyCustomToken?key=<mykey> 
XMLHttpRequest cannot load https://www.googleapis.com/identitytoolkit/v3/relyingparty/verifyCustomToken?key=<mykey>. Response for preflight has invalid HTTP status code 404

告诉我在向 Google 服务器发出选项预请求时遇到问题。问题是我已经安装了 Chrome 插件 Allow-Control-Allow-Origin:*并在 Chrome 启动时添加了“--disable-web-security”参数。对于其他服务,它适用于特定请求,但不适用于 AngularFire2。

我发现有同样问题的人建议切换到 Firefox,但我不会这样做,因为它会破坏 SQLight 存储等其他插件。 有没有办法让它在 Chrome 浏览器中工作?

最佳答案

您可以为您的 CORS 请求添加中间服务器,这将使您的 HTTP 请求带有 CORS 预检并返回结果,仅适用于开发模式。我在我的一个项目中使用了这种方法,因为我只有一个客户端。

所以你可以这样做:

getMyInfo(info: Info, provider?: string) {
   if (!provider) {
       provider = 'corsanywhere';
   }



   this.crossGet(`http://google_apis/${Info}/`,`${provider}`).map(res => res.json())
                    .subscribe(res => {
        // GOT RESULT
        console.log("Res: " + res);
   });
}

这些是您可以使用的提供程序:

corsanywhere(url: string, options: any): any {
        var promise = this.http.get('https://cors-anywhere.herokuapp.com/' + url);
    return promise;
};

corsnow(url: string, options: any): any {
    var promise = this.http.get('https://cors.now.sh/' + url);
    return promise;
};

crossGet(url: string, provider: any, options?: any): any {
    var promise = this[provider](url, options);
    return promise;
};

事实上,在这种方法中我们并没有解决问题,我们只是覆盖了它。但我认为这是一个很好的解决方案,因为您只会将其用于开发。

希望对您有所帮助,祝您好运!

关于android - 使用 AngularFire2 和 Firebase 3 时出现 Ionic 2 应用程序 CORS 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42842064/

相关文章:

android - 工作区构建卡住怎么办?

google-chrome - 问题 : Chrome 32 developer tools search moved and seems broken (Indexing. ..)

javascript - Angular 2 http 服务中的访问控制允许来源问题

javascript - 具有 Windows 身份验证的 CORS

JavaScript 粘贴事件在 Chrome 中运行良好,但在 Firefox 中运行不正常

javascript - 使用 Node.js 后端在我的 React 应用程序中启用 CORS

java - 如何防止按钮和其他对象重叠?

android - 按回时跳过返回直接父 Activity

android - 从 Dagger 模块方法调用 inject() - 不好的做法?

javascript - 使用 JavaScript 一次打开 25 个以上的选项卡