正如标题所说,我正在尝试使用带有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请求发出时,会出现一个窗口,询问用户名和密码。这不应该出现,因为用户和通行证都在AJAX请求中!如果我放置用户并传递它,那么验证在目标服务器上运行良好。
谢谢你抽出时间!抱歉我的非母语英语写作=D。
对于跨域请求,将内容类型设置为application/x-www-form-urlencoded
、multipart/form-data
或text/plain
以外的任何内容都将触发浏览器向服务器发送飞行前OPTIONS
请求。此外,对于跨域脚本和跨域JSONP请求,error
处理程序未被调用,因此您无法处理它。这是一个Ajax事件。
有关如何使用CORS进行跨域请求的详细信息和另一篇精彩文章,请参阅此处。
没有用户名和密码选项,您应该将其放入请求数据中,如下所示:
$.ajax({
url: url,
dataType: 'json',
data: {
username: 'user',
password: 'pass'
},
crossDomain: true,
xhrFields: {
withCredentials: true
},
success: function(data) {},
error: function(e){}
});