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

Mic*_*ner 5 javascript webpack vue.js

问题

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

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

在此处输入图片说明

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

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


工具类

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

注意:我用伪造的网址替换了真实的api网址和服务器

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());
}
Run Code Online (Sandbox Code Playgroud)

Webpack API代理设置

proxyTable: {
   "/api": "http://www.myDevServer.net"
}
Run Code Online (Sandbox Code Playgroud)

Mic*_*ner 1

当我更改 Webpack API 代理设置以匹配模式时,我得到了它的工作。我还没有找到相关文档changeOrigin,但它似乎是不言自明的。

更正了 Webpack API 代理设置

proxyTable: {
   "/api": {
      target: "http://www.myDevServer.net",
      changeOrigin: true
   }
}
Run Code Online (Sandbox Code Playgroud)

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