AjaxSubmit与标准Ajax调用的CORS问题

时间:2014-07-22 17:18:10

标签: javascript jquery ajax cors

我有两个应用程序在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等程序中不可见。

2 个答案:

答案 0 :(得分:0)

我猜这是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
        }
    })

答案 1 :(得分:0)

答案是我自己的愚蠢错误。我发送了一个不正确的身份验证代码,我的Python只在发送的数据有效时才设置CORS。就像我说的那样,愚蠢的错误在我身边。为了清楚起见,从上面的消息中,Python DOES以我在OP中描述的方式发送适当的CORS头。就我而言,我只需要使用正确的身份验证代码来调用它......

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