【问题标题】:CORS Issue with AjaxSubmit vs. Standard Ajax CallAjaxSubmit 与标准 Ajax 调用的 CORS 问题
【发布时间】:2014-09-13 15:36:34
【问题描述】:

我有两个在 Google 的 App Engine 上相互通信的应用程序。它们在不同的域下运行。我在 Python 中使用以下代码启用了 CORS:

self.response.headers.add_header("Access-Control-Allow-Origin", "*")

当我在 JavaScript 中使用如下调用时,这非常有效:

$.ajax({
            type:"POST",
            url: "https://theurl.com",
            cache: false,
            data: {"auth":authCode,},
            success: function(data)
            {
                success stuff
            }
        }) // end of ajax call

但是,如果我将上述内容转换为使用 ajaxSubmit,则会收到 CORS 错误:

$("#secureForm").ajaxSubmit(
    {
        type:"POST",
        url: "https://theurl.com",
        cache: false,
        success: function(data)
        {
            same success stuff as above
        } 
    }) // end of ajax submit

显然,这两种方法的发布方式略有不同,但它们会以不同的结果出现在完全相同的地方。我希望使用 ajaxSubmit 来确保我传递的参数在 Firebug 等程序中不可见。

【问题讨论】:

    标签: javascript jquery ajax cors


    【解决方案1】:

    我猜这是您的 Python 应用程序中的内部服务器错误。
    大多数内部服务器错误不会传递 CORS 标头,因为服务器在设置标头之前停止。

    如您所见,jQuery ajaxSubmit 确实适用于 CORS 过滤器:
    http://jsfiddle.net/8JJC8

    不过你也可以使用jQuery.serialize

    $.ajax({
            type:"POST",
            url: "https://theurl.com",
            cache: false,
            data: $('#secureForm').serialize(),
            success: function(data)
            {
                // success stuff
            }
        })
    

    【讨论】:

    • 感谢您的宝贵时间。 CORS 确实适用于 Python。我在上面回答了我自己的问题,即我的问题是错误的身份验证代码。我犯了一个愚蠢的错误。
    • 正如我所说,您的 Python 代码中存在应用程序错误;)
    【解决方案2】:

    答案是我自己的愚蠢错误。我发送了不正确的身份验证代码,而我的 Python 仅在发送的数据有效时设置 CORS。就像我说的,愚蠢的错误站在我这边。需要明确的是,从上面的消息中,Python 确实以我在我的 OP 中描述的方式发送了适当的 CORS 标头。就我而言,我只需要使用正确的身份验证代码来调用它就可以了......

    顺便说一句,使用 ajaxSubmit 并不能解决导致我出现在这里的问题。使用 Firebug 仍然可以看到参数....

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-03-20
      • 2014-10-26
      • 2017-09-16
      • 1970-01-01
      • 2017-07-18
      • 2015-12-16
      相关资源
      最近更新 更多