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.
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.