$http.post在AngularJS中无法工作。
$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上。
你能帮我解决问题吗?
谢谢!
问题的出现原因是:发送POST请求的服务器需要在其响应中包含Access-Control-Allow-Headers。将其放入客户端没有任何效果。服务器需要指定是否接受跨源请求,因此客户端无法自行决定是否允许跨域资源共享(CORS)。
解决方法是:在服务器端的响应中包含Access-Control-Allow-Headers。可以参考这个帖子中的解释。
对不起,我输入速度太慢了,已经标记为重复。
在AngularJS中,有一个问题是在使用$http.post方法时无法正常工作。出现这个问题的原因是CORS政策的限制,服务端的响应缺少Content-Type头字段。解决这个问题的方法是通过配置api服务器或者后端api来处理CORS政策的限制。在特定的情况下,如果使用ionic框架在本地运行应用程序,可以通过在ionic.config.json文件中添加一个代理来避免违反CORS政策。在Angular应用程序中,需要正确配置api端点。可以使用javascript任务运行器(gulp、grunt)来自动化这个过程。如果需要管理前端不同环境下的api端点,可以创建一个json配置文件,并注入一个模块来根据环境获取正确的地址。以上是解决这个问题的原因和方法。