希望有人能在这里帮助我;尝试使用带电容器的Ionic,并在尝试通过POST上传图像时仅在Android 9 Live设备上运行以下CORS错误:
E/Capacitor/Console: File: http://localhost/add-item - Line 0 - Msg: Access to XMLHttpRequest at 'https://MYURLGOESHERE/api.php' from origin 'http://localhost' has been blocked by CORS policy: No 'Access-Control-Allow-Origin' header is present on the requested resource.
离子型:
import { HttpClient, HttpHeaders, HttpRequest } from '@angular/common/http';
...
this.http.post("https:://MYURLGOESHERE/api.php", postObject, {headers: {
'Content-Type': 'application/x-www-form-urlencoded'
}
})
...
Api PHP脚本:
<?php
header('Access-Control-Allow-Origin: *');
header("Access-Control-Expose-Headers: access-control-allow-origin");
header('Access-Control-Allow-Credentials: true');
header('Access-Control-Allow-Headers: *');
header('Access-Control-Max-Age: -1');
header('Access-Control-Allow-Methods: GET,POST,OPTIONS');
header('Content-Type: application/json');
...
我已经检查了服务器上的所有最大上传大小是否超过了我试图上传的图像的大小,并且我已经使用以下CURL测试确认不存在CORS错误:
curl -H "Access-Control-Request-Method: POST" -H "Origin: http://localhost" -I --head https://MYURLGOESHERE/api.php
我完全不知道问题可能是什么。所有其他没有在设备上上传图像的POST请求都没有同样的CORS问题。有人知道这里可能发生了什么,或者我可以了解更多的事情吗?
对于任何有同样问题的人,解决方案是删除标题
'Content-Type': 'application/x-www-form-urlencoded'
来自post请求,并解决了所有平台上的问题。