Ionic v4 withCredentials true 给我 cors 错误

Ionic v4 withCredentials true giving me cors error

Ionic v1 api 调用正在使用 withCredentials true 但不是 ionic v4 代码工作给我访问控制错误

Ionic v1 代码

vm.getUser = function (email, password) {
  return $http({
  method: 'POST',
   crossDomain: true,
  dataType: "json",
  url: 'http://localhost:3000/api/login/1',
  contentType: "application/json",
  xhrFields: {
    withCredentials: true
  },
  data: {"email": email, "password": password}
});
 };

**工作**

 getUser(){
this.http.post(this.url, 
 {"email": email,      "password": password},
{headers:{Content-Type:'application/json'}, withCredentials:true});

不工作

https 不是 http

你应该为你的 url 使用 https,如果它支持的话,否则它不会在现代 Android 设备上工作。

他们开始在几个版本之前阻止它,除非你添加额外的安全设置来允许它。

CORS 错误

这是因为 Ionic 4 使用不同的、更现代的 webview。它有很多优点,但它有一个问题是 webview 本身强制执行 CORS。

不过,解决方案不在您的应用程序中。您需要更改 api 所在的服务器 运行,它需要允许 cors 策略。

您应该阅读 official documentation as a starting point 但实际的解决方案将取决于您如何编写登录 api。

你能避免 CORS 吗?

阅读 docs here:

Web Views enforce CORS, so it's important that external services properly handle cross-origin requests. See enable-cors.org and MDN for more details.

If CORS is not implemented on the server, there is a native plugin that performs HTTP requests in the native layer which bypasses CORS.