带有凭据的JQuery跨站点请求

时间:2015-02-24 14:44:58

标签: jquery ajax cors

正如tittle所说,我正在尝试使用带有CORS的JQuery来访问跨站点REST服务。 问题是证书。我从这个网站上得到了一些答案,但似乎我的代码没有发送任何验证数据,因为它要求用户并通过打开一个窗口。我会显示一些代码,以便您看到它:

JQquery:

$.ajax({
    username: 'user',
    password: 'pass',
    url: url,
    dataType: 'json',
    data: {},
    crossDomain: true,
    xhrFields: {
          withCredentials: true
    },
    success: function(data) {},
    error: function(e){}
}); 

当我发出AJAX请求时,会出现一个询问用户名和密码的窗口。这个应该没有出现,因为用户和pass都在AJAX请求中!如果我放置用户并传递它的工作原理,那么validaton在目标服务器上工作正常。

感谢您的时间!抱歉,我的非英语母语写作= D。

2 个答案:

答案 0 :(得分:1)

对于跨域请求,将内容类型设置为application/x-www-form-urlencodedmultipart/form-datatext/plain以外的任何内容都会触发浏览器发送预检OPTIONS请求服务器。 对于跨域脚本和跨域JSONP请求,error处理程序未被称为,因此您将无法处理它。这是Ajax Event

有关详细信息,请参阅here以及有关如何使用CORS here进行跨域请求的其他精彩文章。

答案 1 :(得分:0)

没有用户名和密码选项,您应该将其放在请求数据中,如下所示:

$.ajax({
    url: url,
    dataType: 'json',
    data: {
        username: 'user',
        password: 'pass'
    },
    crossDomain: true,
    xhrFields: {
          withCredentials: true
    },
    success: function(data) {},
    error: function(e){}
});