【问题标题】:Force JQuery to send POST request instead of OPTIONS when calling to a different domain调用不同域时强制 JQuery 发送 POST 请求而不是 OPTIONS
【发布时间】:2012-02-20 08:09:19
【问题描述】:

我需要向不同的域发出 ajax POST 请求 (json)(稍后所有内容都将在同一个域中,但我正在 localhost 中进行测试,还没有访问服务器的权限)。

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

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

jsonp:不起作用

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

我在 POST 请求的标头中发送身份验证,但 JQuery 并未将其包含在 OPTIONS 请求的标头中,并且由于它是“在后台”完成的,因此我无法添加它。

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

  1. 将身份验证标头添加到 OPTIONS 请求。但如前所述,我不会自己发送此请求,所以我不知道在哪里/如何发送。

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

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

提前致谢。

【问题讨论】:

  • 这不是重复的 - 他们使用 GET,我使用的是 POST(例如,jsonp 似乎与 GET 一起使用,而不是与 POST 一起使用)。而且问题也不同,我不是在问为什么我得到 OPTIONS,我是在问如何修改 JQuery 行为(或替代解决方案)。

标签: jquery ajax json authentication cors


【解决方案1】:

这是一个棘手的问题。我建议执行以下操作。

在同一个域中创建一个 ajax 连接文件。对位于其他位置的文件进行 cURL 连接。

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

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

简单地谷歌搜索“post headers curl”应该可以帮助你完成这部分。

【讨论】:

    猜你喜欢
    • 2014-04-16
    • 1970-01-01
    • 2014-04-10
    • 1970-01-01
    • 2017-03-22
    • 2011-11-20
    • 1970-01-01
    • 2018-10-29
    相关资源
    最近更新 更多