道场的xhrPost&火狐

时间:2011-05-23 07:37:46

标签: javascript json post dojo http-post

我有一个登录脚本,将用户名/密码作为json发送到服务器。它使用POST,所以在客户端使用xhrPost。问题是当我尝试使用Firefox登录时,浏览器不会发出POST请求,而是发出OPTIONS请求并且实际上并不发送任何参数。 Chrome中的代码POST很棒Safari所以Firefox肯定会发生一些事情。登录服务器位于不同的IP:端口,因此它是跨域请求,我不知道这是否重要。

以下是代码:

dojo.xhrPost({
    url: settings().get('login_server'),
    postData: dojo.toJson({username:user,password:pass}),
    handleAs: 'json',
    headers: { "Content-Type": "application/json", "Accept": "application/json"},
    load: function(data,status) { ... },
    error: function(error,status) { ... }
})

1 个答案:

答案 0 :(得分:0)

除非服务器支持HTTP access control,否则您无法跨浏览器可靠地使用XMLHttpRequest来执行跨域发布。这就是为什么Dojo正在执行OPTIONS请求,以检查Access-Control-Allow-Origin标头。

您可以使用dojo.io.iframe来POST到另一个域,但是除非登录端点返回特殊格式的页面(基本上在textarea中包含JSON),否则无法检查是否成功完成。

支持XMLHttpRequest Level 2的浏览器可以发出跨域请求。这就是它适用于Chrome / Safari等的原因。