jquery ajax 请求使用 OPTIONS 而不是 GET/POST - 仅在 iPad 上?

标签 jquery ajax ipad

我正在开发一个使用大量 AJAX 调用的网站。我正在使用快捷方式 - .get()、.post() 和 .load()

在台式机上,使用我迄今为止测试过的任何浏览器一切正常。但是当我使用 iPad 进行测试时,所有 AJAX 调用都会失败。检查服务器日志发现他们正在使用 OPTIONS 而不是 GET/POST - 到目前为止,这听起来像是之前回答过的问题,但是:

a) 这种情况仅发生在 iPad 移动版 Safari 上,而不会发生在桌面上的 Safari 或桌面上的任何其他浏览器上 b) 我已经三重检查我是否使用相同的域、没有子域、没有 http/https 等。

我不知道这里发生了什么,所以有人可以帮忙吗?

最佳答案

我在 JQuery/.NET WCF 的一个项目中遇到了同样的问题,其中 Firefox 使用 OPTIONS 动词来了解允许哪些动词(get、post、delete、put)。

因此,我将其添加到“Application_BeginRequest”方法中的 global.asax.cs 文件中,该方法由所有 REST 服务继承。因此,当调用 REST 服务时,它首先通过该方法:

HttpContext.Current.Response.AddHeader("Access-Control-Allow-Origin", "*");

if (HttpContext.Current.Request.HttpMethod == "OPTIONS") {
    HttpContext.Current.Response.AddHeader("Cache-Control", "no-cache");
    HttpContext.Current.Response.AddHeader("Access-Control-Allow-Methods", "GET, POST, PUT, DELETE");
    HttpContext.Current.Response.AddHeader("Access-Control-Allow-Headers", "Content-Type, Accept, x-requested-with");
    HttpContext.Current.Response.AddHeader("Access-Control-Max-Age", "1728000");
    HttpContext.Current.Response.End();
}

当使用动词“OPTIONS”时,全局页面返回允许的选项。然后浏览器发送POST/DELETE/GET/PUT请求。

我想你必须做类似的事情。您的网站使用什么技术?

顺便说一句,如果你有更好的方法来解决这个问题,我也很高兴使用它:)

关于jquery ajax 请求使用 OPTIONS 而不是 GET/POST - 仅在 iPad 上?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9522751/

相关文章:

javascript - GMap API 3点击触发链接标记

javascript - 使用 select 选项仅显示第一个 <td> 的所需值 =""的表行

php - 当您将鼠标悬停在网页上的链接上时,如何隐藏浏览器状态栏上的链接?

JavaScript跨域调用: call from HTTP to HTTPS

ios - 在 iPad 的 iOS 8.3 上关闭 UIAlertView 后键盘弹出

javascript - jQuery:使用正确的选择器在对象上未定义

javascript - 将事件发送到 GA 的正确方法是什么?

javascript - jquery 模板内的 &lt;script&gt; 标签

jquery - 如何在 iOS 主屏幕应用程序中使用多页 jQuery 移动文档?

iphone - 应用程序配置的最佳实践