通常,当我向非本地服务器发出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);
});
谢谢你们,这是团队的努力:)
答案 0 :(得分:1)
是否要求提出额外的python manage.py collectstatic
请求?我创建了一个小的(32 LOC)示例,它可以正常工作并检索数据:
https://jsfiddle.net/ct372m7x/2/
如您所见,数据是从非本地服务器加载的。该示例位于 jsfiddle.net ,请求发送到 httpbin.org - 这会导致应用CORS(您可以在OPTIONS
标题中看到下面的截图)。
您还看到,只有Access-Control-Allow-Origin
请求已被执行,之前没有GET
。