【发布时间】:2017-04-01 02:29:21
【问题描述】:
通常,当我向非本地服务器发出 jQuery 请求时,它会应用 Cross-site HTTP request 规则并最初发送 OPTIONS 请求以验证端点的存在,然后发送请求,即
GET to domain.tld/api/get/user/data/user_id
jQuery 工作正常,但是我想使用 Vue Resource 来处理请求。在我的网络日志中,我只看到发出的实际请求(最初没有 OPTIONS 请求),并且没有收到任何数据。
有人知道如何解决这个问题吗?
示例代码:
var options = {
headers: {
'Authorization': 'Bearer xxx'
}
};
this.$http.get(config.api.base_url + 'open/cities',[options])
.then(function(response){
console.log('new request');
vm.cities = response;
}, function(error){
console.log('error in .js:');
console.log(error);
});
解决办法:
正如@Anton 提到的,没有必要同时拥有两个请求(环境可以忽略不计)。不确定我为使其工作所做的更改,但该请求给了我一个错误。它包括正确设置标题。标头不应作为选项传递,而是作为 http 的属性传递:
this.$http({
root: config.api.base_url + 'open/cities', // url, endpoint
method: 'GET',
headers: {
'Authorization': 'Bearer xxx'
}
}).then(function(response){
console.log('new request');
vm.cities = response;
}, function(error){
console.log('error in .js:');
console.log(error);
});
谢谢你们,这是一个团队的努力:)
【问题讨论】:
-
您能否向我们展示一下您正在使用的代码以及您将使用哪些选项?你看过 > github.com/pagekit/vue-resource/blob/master/docs/config.md 吗?
-
添加了一些代码...查找了 vue-resource 的所有配置可能性,但是控制台仅显示一个请求...在问题中进行了解释。
-
所以如果我理解,你想“ping” api url 以知道它是否可用,然后执行请求?
-
我不知道你有没有注意到,但是在 Chrome 开发工具的网络选项卡上,一个 jQuery 请求(在本例中名为城市)它显示了两次(即使我只编码一个请求),一次检查它是否作为端点有效,另一个从后端获取返回的对象。现在使用 Vue-Resource,它只有第一个请求。请允许我在问题上添加几张图片
标签: httprequest vue-resource vue.js