在 React 中,我的 POST 获取请求在桌面上有效,但在 iPad 上的 Chrome 上无效,这是怎么回事?
Posted
技术标签:
【中文标题】在 React 中,我的 POST 获取请求在桌面上有效,但在 iPad 上的 Chrome 上无效,这是怎么回事?【英文标题】:In React, my POST fetch request works on the desktop but not on the iPad on Chrome, what's wrong? 【发布时间】:2019-05-17 10:04:12 【问题描述】:此操作的目的是在 React 下使用 fetch 以 JSON 格式发送数据。它在桌面浏览器上完美运行,但不适用于 iPad (Chrome 63.0.3239.73)。
动作是填写一个表格,点击提交按钮,然后调用setRedirect
函数并执行下面的代码。
即使找了几个小时,我也找不到解决方案......
我能够看到一些错误是由于 ios 只允许 https 连接,我更正了它,但仍然没有......
setRedirect = (e) =>
e.preventDefault();
const jsonFile = JSON.stringify(
birthday: this.state.birthday,
country: this.state.country,
email: this.state.email,
firstname: this.state.firstname,
lastname: this.state.lastname,
newsletter: this.state.newsletter,
offers: this.state.offers,
phone: this.state.phone,
screenSize: window.innerWidth,
zipCode: this.state.zipCode
)
console.log(jsonFile)
if(window.fetch)
fetch("https://url.fr/event/player/save/",
credentials: 'include',
headers:
'Accept': 'application/json',
'Content-Type': 'application/json'
,
method: "POST",
body: jsonFile
)
.then(response => response.json())
.then((jsonData) =>
console.log("reponse serveur",jsonData);
this.setState(
step: jsonData.code
)
localStorage.setItem("step",jsonData.code);
console.log("step local storage : ",localStorage.getItem("step"));
alert('response : '+jsonData);
)
.catch((error) =>
// handle your errors here
console.error(error)
)
此代码适用于桌面浏览器,没有错误,但在 Chrome iPad 上,一旦您单击按钮(输入提交),什么都不会发生,也不会发送任何内容。 如果您需要更多信息,我在这里。
【问题讨论】:
【参考方案1】:只有 10.3 或更高版本的 iOS 才支持原生提取。在旧设备上,可以使用这样的 polyfill 来获取:https://github.com/github/fetch
【讨论】:
以上是关于在 React 中,我的 POST 获取请求在桌面上有效,但在 iPad 上的 Chrome 上无效,这是怎么回事?的主要内容,如果未能解决你的问题,请参考以下文章
axios.post 返回 400 React Native 的错误请求
如何在 Maven 中为跨域 POST 请求激活 CORS 过滤器?