【问题标题】:Handling GET 301/302 responses with JavaScript in Vue.js在 Vue.js 中使用 JavaScript 处理 GET 301/302 响应
【发布时间】:2020-05-03 13:32:31
【问题描述】:

我需要使用 JavaScript 打印一些 301/302 响应标头:我看到了很多关于 Angular 的答案,但我正在使用 Vue.js 来获得结果。好吧,这并不重要,因为它主要是一个 JavaScript 问题……我的意思是,我不只是对 Vue.js- 解决方案感兴趣,它可以而且应该在任何地方工作。作为前端开发人员,我无法手动创建一个场景,让我的项目在自己的服务器中返回一个重定向,并且很难找到一个没有 CORS 限制的随机远程页面。为了更清楚,我需要在重定向之前获得status 代码和statusText 的301/302 响应(以及新页面的Location),然后是重定向页面的完整标题。现在我只能检索这些最后一个,因为vue-resource 创建的the default this.$http.get(); request 似乎没有将第一个存储在对象中。我在这里要问的是,是否有办法将重定向响应也存储在变量中,然后同时显示两者。我不知道切换到axios 是否更可取——因为我对 Vue.js 还是很陌生。我的组件的方法如下:

getRequest: function() {
  this.$http.get(this.url)
    .then(function(response) {
      if (response.ok) {
        if (response.status === 301 || response.status === 302) {
          // show the redirecting response
        }
      // show the redirected response
      }
    }

编辑:the sources for this project 在 GitHub 上;当您发送 GET 请求并且响应显示 301/302 时,您应该能够看到三列而不是两列,其中第二列显示重定向响应标头的详细信息。

【问题讨论】:

  • 我会尝试使用 Axios 只是为了让生活更轻松,但这可能不会改变服务器给你的响应。但是,当您询问是否有办法将数据存储在变量中但不想要 Vue 特定的方式时,我会感到困惑。您可以将响应写入任何已定义的变量,那么问题是什么?
  • 你说得对,我的意思是...... Vue.js 是我用于这个小应用程序的框架,但我不需要特定的解决方案:它是一个求职面试的测试(无论如何,我已经得到了我真正想要改进的工作;我需要做的是在组件视图中打印第一个准备重定向的响应,只要最后一个重定向的响应……更清楚,statusstatusText 来自两者(第一个响应中的 301/302 , 然后 200) 应该从响应标题中获取并保存在我想在页面上显示的变量中,但我只得到了第二个。
  • 知道了。 console.log(response) 是否给你对象中的状态和状态文本?我有 99% 的把握这些都在 axios 响应中,但已经有一段时间了,因为需要的不仅仅是数字。
  • 没错,埃里克!我想知道切换到 axios 是否可以解决问题,布莱斯。

标签: vue.js axios vue-resource


【解决方案1】:

您无法处理 301 或 302 状态,因为它们在内部

if(response.ok)

block,表示状态为200。试试这个吧:

   getRequest: function() {
  this.$http.get(this.url)
    .then(function(response) {
      if (response.ok) {
      // show the redirected response
      }
      if (response.status === 301 || response.status === 302) {
          // show the redirecting response
      }
    }

【讨论】:

  • 这很简单:我将第二个案例移到response.ok 上,它似乎可以工作。我不明白response.ok 代表 200 响应,我认为它更通用。非常感谢!
猜你喜欢
  • 1970-01-01
  • 2012-03-02
  • 2016-09-20
  • 2012-12-07
  • 1970-01-01
  • 2018-07-15
  • 2013-09-15
  • 1970-01-01
  • 2013-04-23
相关资源
最近更新 更多