我随时尝试向$.ajax
&发送username
请求(同一来源) Safari中的password
选项,它只是默默地失败,永远不会触发任何完整的,成功的或错误的回调。完全相同的请求在Chrome中运行良好。
req = $.ajax
url: ...
type: 'POST'
username: ...
password: ...
data: ...
req.done ...
req.fail ...
如果我运行相同的代码,但没有username
或password
;
req = $.ajax
url: ...
type: 'POST'
data: ...
请求实际上是在Safari中进行的,但显然我的服务器验证失败了。我甚至不确定如何调试这个。我尝试在$.ajax
回调周围的jQuery源代码中删除一些日志行,看起来(尝试的)经过身份验证的请求似乎永远不会在Safari中出现。
更新1/8:
还在Safari / Chrome中使用jQuery 1.11.0进行了测试,结果相同。
更新1/8:
gulty的发送解决方案是我在Safari中使用基本身份验证的唯一方法:
req = $.ajax
url: ...
type: 'POST'
beforeSend: (xhr) -> xhr.setRequestHeader('Authorization', 'Basic username:password')
data: ...
答案 0 :(得分:2)
您的代码适用于大多数浏览器,无论如何,Safari不会仅仅因为开发人员知道的原因而处理请求。
有一种解决方法 - 您需要使用标头:{}或在beforeSend中设置请求标头,如下所示:
beforeSend: function (req) {
req.setRequestHeader('Authorization', "username:password");
}
这是对您的代码的补充 - 您仍应保留用户名:/ password:对于其他浏览器,因为我没有正确测试代码而没有这些凭据。