在 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 上无效,这是怎么回事?的主要内容,如果未能解决你的问题,请参考以下文章

在react-router中接受POST请求

axios.post 返回 400 React Native 的错误请求

获取 Django POST 请求的 API

如何在 Maven 中为跨域 POST 请求激活 CORS 过滤器?

在 Django 中使用 Axios 和 CORS 获取 POST 请求的错误请求并做出反应

在 react-native 中发送请求标头/授权 axios.post