我有两个应用程序在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等程序中不可见。
答案 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仍然可以看到参数....