【发布时间】:2019-04-02 18:21:39
【问题描述】:
我正在使用 ionic 4 和 angular 7 。有一个帖子请求不断触发以下错误,但是当我在 Postman 中测试这个帖子请求时它工作正常:
从源“http://localhost”访问“https://examplecode/backend/”处的 XMLHttpRequest 已被 CORS 策略阻止:对预检请求的响应未通过访问控制检查:没有“访问控制允许源” ' 请求的资源上存在标头。
我的发帖请求:
import { HttpClient, HttpHeaders } from '@angular/common/http';
...
sendCodeToServer(data) {
this.http.post(endpoindURL, data, {
headers: new HttpHeaders({
'Content-Type': 'application/json'
})
}).toPromise().then(
(data) => {
console.log(data);
}).catch((err) => {
console.log(err);
});
我发送的只是这个{“id”:1111111}。 正如我所说,它在 Postman 上运行良好,但在我的应用程序中,我不断收到错误消息。服务器已经有几个措施,所以不会发生这种情况
if ($_SERVER['REQUEST_METHOD'] == 'OPTIONS') {
if (isset($_SERVER['HTTP_ACCESS_CONTROL_REQUEST_METHOD']))
header("Access-Control-Allow-Methods: POST");
if (isset($_SERVER['HTTP_ACCESS_CONTROL_REQUEST_HEADERS']))
header("Access-Control-Allow-Headers: {$_SERVER['HTTP_ACCESS_CONTROL_REQUEST_HEADERS']}");
}
header('Access-Control-Allow-Origin: *');
header("Access-Control-Allow-Headers: *");
不知道如何修复它,服务器看起来不错,请求看起来也不错,并且在邮递员中也可以使用,只是在移动应用上无法使用。
【问题讨论】:
-
CORS 不适用于邮递员,您不会在那里看到错误。你的后端是用什么语言/框架实现的?
-
@Jota.Toledo php
-
能否请您添加失败的 HTTP 请求的 SS 及其详细信息? (浏览器调试器的网络标签视图)
-
@Jota.Toledo 所说的。特别是您可能想要检查响应的 HTTP 状态代码。如果是 4xx 或 5xx 错误,那么很可能在发送响应时没有您的服务器代码设置的自定义响应标头。
-
@Jota.Toledo 这是一个 403 禁止错误,显然它在其他手机上工作但在我的手机上没有,我的手机是 huawei 20 lite matte 并且有 8.1.0,我不知道为什么它只是不适用于我的手机