【发布时间】:2016-02-09 17:01:05
【问题描述】:
使用 Vue.js 1.0 和 Vue 资源的跨站点 ajax 请求。我收到以下错误:XMLHttpRequest 无法加载 http://dev.markitondemand.com/MODApis/Api/v2/Lookup/jsonp?input=NFLX&callback=handleResponse。请求的资源上不存在“Access-Control-Allow-Origin”标头。
我对这个问题有基本的了解,但不确定如何在请求中添加回调函数,或者这是否是本示例的最佳解决方案。我在这里输入完整的请求 URL 只是为了更容易理解。
new Vue({
el: '#stockList',
data: function() {
return {
query: '',
stocks: []
};
},
ready: function() {
this.getStocks();
},
methods: {
getStocks: function() {
this.$http.get('http://dev.markitondemand.com/MODApis/Api/v2/Lookup/jsonp?input=NFLX&callback=handleResponse',
function(data) {
this.stocks = data;
}
);
}
}
})
【问题讨论】:
-
错误消息明确指出服务器不允许来源。对于跨站点请求,服务器必须返回/指定允许请求资源的来源。如果您有控制权在服务器上,请指定此标头值作为响应或
*为所有。 -
也许我不明白这个问题。我正在运行一个本地开发服务器来学习 JavaScript 和 Vue,所以我猜想我可以控制原始服务器。我无法控制 markitondemand.com 服务器,但如果您将该网址放在浏览器中,它确实会返回响应。我认为通过使用 JASONP 可以避免跨站点协议?你能解释一下我错过了什么吗?谢谢
-
嗯,您发送请求的方式似乎是跨站点的,并且服务器未配置为这样做。