我试图使用角度将一个帖子发送到带有Ionic的网址,但我有回复:
对预检请求的响应未通过访问控制检查:请求的资源上不存在“Access-Control-Allow-Origin”标头。因此,不允许原点“http://localhost:8100”访问。响应的HTTP状态代码为404.
我知道外部服务正在运行,因为我通过ajax进行测试,一切运行正常......
在AngularJS(Ionic)和Ajax中使用的代码下面:
离子性:
var loginServiceUrl = 'http://url.com.br'; //It is not the real one
var loginServiceData = {
email: email@email.com.br
senha: 1234
};
$http.post(loginServiceUrl, loginServiceData).
then(function (res){
console.log(res);
});
的Ajax:
$.ajax({
type: "POST",
url : 'http://url.com.br', //It is not the real one
data : {email: 'email@email.com.br', senha: '1234'},
success: function(result) {
$('html').text(JSON.stringify(result));
}
});
有谁知道为什么我在本地主机上通过ajax获取帖子而不是离子,也是localhost?
答案 0 :(得分:1)
检查一下。很好地解释了如何处理像你这样的问题 - > http://blog.ionic.io/handling-cors-issues-in-ionic/
答案 1 :(得分:1)
尝试在POST请求中添加标题。
// DataToSend的示例
var video = $('video')[0];
var t = setInterval(function () {
if(video.readyState > 0) {
var duration = video.duration;
console.log(duration);
clearInterval(t);
}
}, 500);
答案 2 :(得分:0)
CORS与您的前端无关。
在发送POST请求之前,浏览器会向服务器发送OPTIONS请求,以检查是否允许来自您域的呼叫。
因为,您获得状态404,这意味着您的服务器未处理OPTIONS请求
<强> 1。允许OPTIONS请求(与POST相同)
现在来到第二部分,即#34;对预检请求的响应没有通过访问控制检查:否&#39;访问控制 - 允许 - 来源&#39; &#34;
在允许OPTIONS请求之后,现在设置OPTIONS请求的响应头(浏览器将检查OPTIONS请求的响应,然后仅当存在&#39; Access-Control-Allow-Origin&#39;时才处理POST请求。出现在OPTIONS的回复中。
<强> 2。设置OPTIONS请求的响应标头
response().setHeader("Access-Control-Allow-Origin", "*");
response().setHeader("Allow", "*");
response().setHeader("Access-Control-Allow-Methods", "POST, GET, PUT, DELETE, OPTIONS");
response().setHeader("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept, Referer, User-Agent");
实施例.. 的 (在Java中)
路由器:
OPTIONS /*all
controllers.Application.preflight(all)
控制器功能:
public static Result preflight(String all) {
response().setHeader("Access-Control-Allow-Origin", "*");
response().setHeader("Allow", "*");
response().setHeader("Access-Control-Allow-Methods", "POST, GET, PUT, DELETE, OPTIONS");
response().setHeader("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept, Referer, User-Agent, Auth-Token");
return ok();
}
希望这能解决您的问题。
干杯