向API发送JSON的服务器是Gradle包中的Tomcat服务器(它是用Java构建的)。
我很难做一个带有角的API调用。我知道我的API正在工作,因为我可以在“邮递员”上查看它。
var app = angular.module("todo", []);
app.controller("AppCtrl", function($http){
$http.get("192.168.5.100:8080/aggregators/datafile")
.success(function(data){
console.log(data)
})
})当我运行它时,我会得到以下错误:
XMLHttpRequest cannot load %3192.168.5.100:8080/aggregators/datafile. Cross origin requests are only supported for HTTP. 发布于 2014-05-30 19:03:59
您遇到的问题是,在没有CORS或使用JSONP的情况下,您无法从浏览器发出跨源请求。
Postman在浏览器上下文之外操作(就好像您已经发出了cURL请求,如果您熟悉cURL)。
这是出于安全原因。
那么,如何实现JSONP呢?它实际上取决于服务器,但通常,您的资源会查找具有预先确定的querystring参数的GET请求(通常是简单性的callback ):
http://192.168.5.100:8080/aggregators/datafile?callback=mycallback 如何打JSONP电话?
服务器将JSON封装在回调中,使其看起来如下所示:
mycallback({json:object});callback是浏览器在执行请求时应该命中的函数,这就是允许跨域请求的原因。
现在,讲到CORS。
CORS是一种允许浏览器与服务器通信以确定是否应该接受跨域请求的系统。这有点复杂,但通常需要在API上设置某些标头;然后以特定的方式执行Ajax请求(对于JQuery,使用withCredentials属性$.ajax)。服务器检查请求来自哪里,如果它是一个有效的源,它让浏览器知道,浏览器允许请求(我太简单了)。
MDN 对CORS作了详尽的解释,值得一读.
https://stackoverflow.com/questions/23961041
复制相似问题