为什么POST请求在iOS Safari中不起作用?

问题描述 投票:0回答:1

此代码完全适用于包括Safari在内的所有桌面浏览器,但在iOS Safari中不起作用。我根本无法登录该网站。这是代码示例:

async LOGIN_USER ({commit}, {username, password}) {
  this.dispatch('CLEAR_ERROR')
  this.dispatch('SET_LOADING', true)
  var bodyFormData = new FormData()
  bodyFormData.append('username', username)
  bodyFormData.append('password', password)
  await axios({
    method: 'post',
    url: MAINURL + '/auth/jwt/create/',
    config: {
      headers: {'Content-Type': 'multipart/form-data'}
    },
    data: bodyFormData
  })

一周的互联网研究没有给出任何东西。请帮忙。

javascript safari axios
1个回答
1
投票

正如评论中的用户所指出的那样,问题是浏览器不支持async / await功能的原因。这可能发生在低于10.3的iOS版本上,如here所示。

由于这是关键字而不是函数,因此无法通过包含polyfill脚本轻松修复。然而,确实存在其他方法。

您可以使用的一个工具是Babel。 Babel是一个编译器,它采用现代ES7 Javascript并将其转换为旧版浏览器也可支持的东西。

These docs描述了如何配置Babel以将async / await转换为向后兼容的代码。

至少所涉及的步骤如下:

安装Babel包:

npm install --save-dev @babel/core @babel/cli @babel/preset-env
npm install --save @babel/polyfill

安装插件以将async / await转换为生成器

npm install --save-dev @babel/plugin-transform-async-to-generator

从命令行运行

babel --plugins @babel/plugin-transform-async-to-generator script.js

其中script.js是包含HTTP请求的Javascript文件。

这只是所涉及步骤的一般概述。具体步骤取决于您如何设置项目。一般来说,步骤也是类似的。

© www.soinside.com 2019 - 2024. All rights reserved.