Vue资源跨站点HTTP请求

时间:2016-11-17 13:54:20

标签: httprequest vue-resource vue.js

通常,当我向非本地服务器发出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);
                });

jquery-request

解决方案:

正如@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);
                });

谢谢你们,这是团队的努力:)

1 个答案:

答案 0 :(得分:1)

是否要求提出额外的python manage.py collectstatic请求?我创建了一个小的(32 LOC)示例,它可以正常工作并检索数据:

https://jsfiddle.net/ct372m7x/2/

如您所见,数据是从非本地服务器加载的。该示例位于 jsfiddle.net ,请求发送到 httpbin.org - 这会导致应用CORS(您可以在OPTIONS标题中看到下面的截图)。

您还看到,只有Access-Control-Allow-Origin请求已被执行,之前没有GET

enter image description here