强制JQuery在调用其他域时发送POST请求而不是OPTIONS

时间:2012-01-27 09:59:57

标签: jquery ajax json authentication cors

我需要将ajax POST请求(json)发送到另一个域(以后所有内容都在同一个域中,但我在localhost中进行测试,但还没有访问服务器)

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

我找不到解决这个问题的方法:

jsonp:没有工作

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

我在POST请求的标头中发送身份验证,但是JQuery没有将此包含在OPTIONS请求的标头中,并且因为它已经完成了#34;在后台"中,我无法添加它。

实际上可能有两种解决方案:

  1. 将身份验证标头添加到OPTIONS请求中。但如上所述,我自己并未发送此请求,因此我不知道在何处/如何执行此操作。

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

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

    提前致谢。

1 个答案:

答案 0 :(得分:1)

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

在同一个域上创建一个ajax-connection文件。与位于其他位置的文件建立cURL连接。

发送信息并添加身份验证标题。

您可以在此处查看最后一部分:http://php.bigresource.com/CURL-and-HTTP-Authentication--p8WkKqkq.html

只需谷歌搜索“post headers curl”就可以帮助你完成该部分。