首页 > 解决方案 > Ajax 请求适用于移动 Safari 控制台,但不适用于代码

问题描述

我有以下执行简单请求的 jQuery 代码:

$.ajax({
  type: "POST",
  url: "/wp-admin/admin-ajax.php",
  headers: {
    "pragma": "no-cache",
    "cache-control": "no-cache",
  },
  data: payload,
  function(response) {
    console.log('Got this from the server: ' + response);
  }
});

现在,当我在任何桌面浏览器上运行此代码时,它似乎可以完美运行。但是,它仅在移动 Safari 浏览器上失败。有趣的是,如果我通过移动 Safari 控制台执行它,它可以完美运行。

检查网络连接后,我发现移动 Safari 浏览器似乎没有正确设置请求标头。具体来说,以下五个请求标头在其他浏览器中可见(以及在控制台中,当我在那里执行它时),但是当请求来自我的 iPhone 上的正常按钮单击时,神秘地丢失了:

-H 'Host: abc.com' \
-H 'Accept-Language: en-us' \
-H 'Accept-Encoding: br, gzip, deflate' \
-H 'Content-Length: 187' \
-H 'Connection: keep-alive' \

我尝试在代码中手动设置这些标头,但 Safari 抱怨“设置不安全标头”的安全问题。对于它的价值,我使用的是 JQuery 3.4.1。

有人可以帮我弄清楚如何使这个请求在移动浏览器上工作吗?

标签: javascriptjqueryajaxmobile-safarimobile-browser

解决方案


推荐阅读