javascript - VueJS 2 Cli 使用 Dev Server 将 POST 请求转换为 GET 请求

标签 javascript webpack vue.js

问题

我使用 Vue CLI 启动了一个新的 VueJS 项目。我正在使用 fetch 将登录信息发布到远程 DEV 服务器。当我在我的本地环境中调用此方法时,它会将此调用处理为 GET,然后是 POST,然后是 OPTIONS,然后是 GET。

这是我运行 POST 请求后 Chrome 网络面板显示的内容。

enter image description here

当它到达 api 服务器时,它被作为 GET 请求处理,返回 405,因为它是 POST 而不是 GET。

问题

为什么它在两个 301 之间跳来跳去,然后将调用转换为 GET 请求。


工具

我正在使用 VueJS 2 CLI、Webpack 和 Babel

Note: I replaced the real api url and server with a fake one

JavaScript 获取方法

authenticate (username, password) {
  const url = '/api/login/authenticate/'
  return fetch(url, {
    method: 'POST',
    body: JSON.stringify({ username, password }),
    headers: new Headers({
      'Content-Type': 'application/json'
    })
  }).then(res => res.json());
}

Webpack API 代理设置

proxyTable: {
   "/api": "http://www.myDevServer.net"
}

最佳答案

当我更改 Webpack API 代理设置以匹配 this 时,它开始工作了图案。我还没有在 changeOrigin 上找到文档,但它似乎不言自明。

更正了 Webpack API 代理设置

proxyTable: {
   "/api": {
      target: "http://www.myDevServer.net",
      changeOrigin: true
   }
}

我猜发生的事情是我调用了一个改变了来源的代理。由于代理服务器不允许这样做,因此它返回了 301。由于服务器不在那里,它不允许 POST 请求。然后代理试图查看可用的选项,因此它发送了一个 OPTIONS 调用。它看到 GET 被允许并调用它。 GET 试图在我的 POST 调用下进行处理,但由于格式错误而失败,返回了 405

关于javascript - VueJS 2 Cli 使用 Dev Server 将 POST 请求转换为 GET 请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48936421/

相关文章:

javascript - 单选按钮(带点击事件)不在 Firefox 中传递参数

javascript - 用于种子随机数生成的 MD5,更好的方法?

javascript - 防止在同一选项卡中打开链接,但允许在新选项卡中打开

vue.js - 堆叠多个 Vue 组件对性能的影响

vue.js - 如何在模态中打开vue-router

vue.js - Vue 2 + Bootstrap-vue - 动态属性

javascript - 如何实现 WebRTC 录制到 Node.js 服务器

javascript - ReactJS 和继承

webpack - 如何使用 CopyWebpackPlugin 复制和重命名文件

Webpack - 巨大的 bundle.js 文件由于 FullCalendar