【问题标题】:Vue Resource Cross-site HTTP requestVue 资源跨站 HTTP 请求
【发布时间】: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);
                });

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);
                });

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

【问题讨论】:

  • 您能否向我们展示一下您正在使用的代码以及您将使用哪些选项?你看过 > github.com/pagekit/vue-resource/blob/master/docs/config.md 吗?
  • 添加了一些代码...查找了 vue-resource 的所有配置可能性,但是控制台仅显示一个请求...在问题中进行了解释。
  • 所以如果我理解,你想“ping” api url 以知道它是否可用,然后执行请求?
  • 我不知道你有没有注意到,但是在 Chrome 开发工具的网络选项卡上,一个 jQuery 请求(在本例中名为城市)它显示了两次(即使我只编码一个请求),一次检查它是否作为端点有效,另一个从后端获取返回的对象。现在使用 Vue-Resource,它只有第一个请求。请允许我在问题上添加几张图片

标签: httprequest vue-resource vue.js


【解决方案1】:

是否需要发出额外的OPTIONS 请求?我创建了一个小型 (32 LOC) 示例,它可以正常工作并检索数据:

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

如您所见,数据是从非本地服务器加载的。该示例位于 jsfiddle.net 并且向 httpbin.org 发出请求 - 这会导致应用 CORS(您可以在屏幕截图中看到 Access-Control-Allow-Origin 标头下面)。

你还看到,只有GET请求被执行,之前没有OPTIONS

【讨论】:

  • 当然不是,没有必要,但是我没有得到任何结果,这就是我有这个假设的原因。我不确定我到底改变了什么,但结果现在不同了。它正在工作:) 感谢您的合作
猜你喜欢
  • 1970-01-01
  • 2012-08-20
  • 1970-01-01
  • 2013-11-19
相关资源
最近更新 更多