当调用不同的域时强制JQuery发送POST请求而不是OPTIONS

当调用不同的域时强制JQuery发送POST请求而不是OPTIONS

问题描述:

我需要对另一个域做一个ajax POST请求(json)(后来一切都会在同一个域中,但是我在本地主机上测试并且还没有访问服务器)。当调用不同的域时强制JQuery发送POST请求而不是OPTIONS

注意:目前无法在服务器代码中进行修改。

我发现这个问题的几个解决方案:

JSONP:不工作

CORS插件的Firefox(强制允许不同的域):如果我发送POST请求的工作,但JQuery的本身做出第一个OPTIONS请求(因为它可能检测到不同的域)。在这里我有一个问题,因为服务器需要身份验证(对于所有内容,包括OPTIONS)。

我在POST请求的头部发送了认证,但JQuery没有在OPTIONS请求的头部包括这个,因为它是在“后台”完成的,所以我不能添加它。

实际上可能有2个解决方案:

  1. 添加身份验证头OPTIONS请求。但如前所述,我不是自己发送此请求,所以我不知道在哪里/如何执行此操作。

  2. 强制JQuery不发出OPTIONS请求,但直接发送POST(这是此线程的标题)。我搜索了一段时间,但没有找到任何东西。那可能吗?

我正在使用JQuery 1.7.1和$ .ajax({...})来发出请求。

在此先感谢。

+0

可能的重复:http://*.com/questions/1256593/jquery-why-am-i-getting-an-options-request-insted-of-a-get-request – zrvan 2012-01-27 10:05:22

+0

这不是重复的 - 那里他们使用GET,我使用POST(jsonp似乎与GET一起使用,而不是与POST一起使用)。问题也不同,我不问为什么我会得到OPTIONS,我问如何修改JQuery行为(或替代解决方案)。 – Ixx 2012-01-27 12:17:50

这是一个棘手的问题。我建议做以下事情。

在同一个域上创建一个ajax连接文件。对位于其他地方的文件执行cURL连接。

发送帖子信息并添加验证头。

你可以在这里看到的最后一部分:http://php.bigresource.com/CURL-and-HTTP-Authentication--p8WkKqkq.html

简单的谷歌搜索“后首部卷曲”应该可以帮助你的那部分。

+0

工作,非常感谢! – Ixx 2012-01-29 18:12:53