$http.post在AngularJS中无法工作。

14 浏览
0 Comments

$http.post在AngularJS中无法工作。

我试图进行一个$http.post请求,但出现以下错误:

XMLHttpRequest无法加载https://mipage.com/examplephp。请求头内容类型字段在预检响应中不被Access-Control-Allow-Headers允许。

如果我将$http.post更改为$http.get请求,服务器会响应JSON,所以...我认为CORS没有问题。我还在ionic项目中放了一个代理。

这是我的函数:

function obtenerSesion() {
        debugger;
        return $http.post(iniciarSesionUrl,
                 {params: {username: 'prueba123',password: 'prueba123'}}).then(function(response) {
            canchas = response.data;        
            return canchas;
        })
        .catch(generarError);
    }

服务器返回JSON时无论是否有参数,因为我以为问题可能是

$_POST["username"];

$_POST["password"];

但不是。我在服务器上硬编码了数据,所以问题出在Angular JS上。

你能帮我解决问题吗?

谢谢!

0
0 Comments

问题的出现原因是:发送POST请求的服务器需要在其响应中包含Access-Control-Allow-Headers。将其放入客户端没有任何效果。服务器需要指定是否接受跨源请求,因此客户端无法自行决定是否允许跨域资源共享(CORS)。

解决方法是:在服务器端的响应中包含Access-Control-Allow-Headers。可以参考这个帖子中的解释。

对不起,我输入速度太慢了,已经标记为重复。

0
0 Comments

在AngularJS中,有一个问题是在使用$http.post方法时无法正常工作。出现这个问题的原因是CORS政策的限制,服务端的响应缺少Content-Type头字段。解决这个问题的方法是通过配置api服务器或者后端api来处理CORS政策的限制。在特定的情况下,如果使用ionic框架在本地运行应用程序,可以通过在ionic.config.json文件中添加一个代理来避免违反CORS政策。在Angular应用程序中,需要正确配置api端点。可以使用javascript任务运行器(gulp、grunt)来自动化这个过程。如果需要管理前端不同环境下的api端点,可以创建一个json配置文件,并注入一个模块来根据环境获取正确的地址。以上是解决这个问题的原因和方法。

0