Lin*_*say 4 ajax jquery json http-headers
我正在尝试向$.getJSON以下URL 发出简单请求:http:
//dev.markitondemand.com/Api/v2/InteractiveChart/json?parameter =%7B%22Normalized%22%3Afalse%2C%22NumberOfDays%22%3A7% 2C%22DataPeriod%22%3A%22Day%22%2C%22Elements%22%3A%5B%7B%22Symbol%22%3A%22NUS%22%2C%22Type%22%3A%22price%22%2C%22Params% 22%3A%5B%22C%22%5D%7D%5D%7D
请求的资源上不存在"Access-Control-Allow-Origin"标头.原产地" 的http://本地主机:1337 "因此不允许访问.
我的代码很简单:
var ticker = "CRR";
var url = "http://dev.markitondemand.com/Api/v2/InteractiveChart/json?parameters=%7B%22Normalized%22%3Afalse%2C%22NumberOfDays%22%3A7%2C%22DataPeriod%22%3A%22Day%22%2C%22Elements%22%3A%5B%7B%22Symbol%22%3A%22" + ticker + "%22%2C%22Type%22%3A%22price%22%2C%22Params%22%3A%5B%22c%22%5D%7D%5D%7D";
$.getJSON(url, function(data) {
console.log(data);
}).success(function() {
$('#show-data').html("Successfully retrieved data.");
}).error(function() {
$('#show-data').html("Service Unavailable.");
});
Run Code Online (Sandbox Code Playgroud)
它没有运行任何错误或成功函数,而当我尝试时,我得到同样的东西$.ajax.就我的设置而言,我正在尝试一个MEN项目,所以我的localhost上有Mongo,Express和Node.js.任何帮助,将不胜感激.
您显然正在尝试跨源Ajax请求.这意味着您正在尝试联系与原始网页所在的域/端口不同的域/端口上的服务器.这称为交叉原始请求,默认情况下不允许.您可以在此处阅读有关浏览器的相同原始安全策略.
为了允许直接发出跨源请求,您发出请求的服务器必须特别允许它.
所述Access-Control-Allow-Origin报头是,它会允许这种类型的访问的一种方法,但它显然不应用该标头,因此该请求正在被浏览器拒绝.您可以在此处阅读CORS(跨源资源共享)的工作原理.
制作跨源请求的其他方法是使用JSONP(还需要目标服务器的协作以支持JSONP请求)或通过代理(允许您联系的另一台服务器,可以为您提供所需服务器的请求并返回你的结果).代理在您有权访问的服务器上需要您自己的服务器代码,但不需要目标服务器的协作.
根据此页面上的文档,Markit On Demand似乎支持JSONP,因此您可以将该表单用于跨源请求.如果你设置适当的dataType: "jsonp"选项,jQuery的ajax支持该格式$.ajax().