【问题标题】:Fetch POST headers - iOS Safari issues获取 POST 标头 - iOS Safari 问题
【发布时间】:2022-07-04 17:46:09
【问题描述】:

我正在从客户端(我的 heroku 域上的 https 客户端)向我的服务器发送带有标头的数据,在 Chrome 移动设备上没有任何问题,但 iOS safari 不会发布数据。

下面的 javascript 位于客户端,并从用户移动浏览器中的地理定位 API 中提取数据(在请求许可后)。 Chrome 移动版和 iOS Safari 都会要求用户批准地理位置,但随后 iOS Safari 会向端点发送另一个“GET”,而不是像 Chrome 移动版那样的“POST”。

const status = "Y";
const guest = cookies.guest_id;
const data = { status, guest };

const options = {
    method: 'POST',
    headers: {
        'Content-type': 'application/json'
    },
    body: JSON.stringify(data)
};
fetch(`/events/${eventID}/prompt`, options) // my endpoint

我的理解是 iOS 移动端的 fetch() 是 fully supported,那么为什么它没有按预期执行?

【问题讨论】:

    标签: javascript ios iphone post fetch


    【解决方案1】:

    iOS 15.5 上的 Safari 也存在同样的问题。简单的请求

    fetch('https://httpbin.org/post', {
      method: 'POST'
    });
    

    GET 完成,结果为 405。

    正如https://github.com/github/fetch/issues/447 的讨论中所述,添加了mode: 'cors 选项,它也适用于iOS 15.5 上的Safari。

    fetch('https://httpbin.org/post', {
      method: 'POST',
      mode: 'cors'
    });
    

    我希望能帮助别人。不幸的是,我无法确定这种行为的原因。

    【讨论】:

      猜你喜欢
      • 2014-10-25
      • 2017-07-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-12
      相关资源
      最近更新 更多