Eri*_*del 10 javascript safari ajax
我在Safari扩展中遇到以下问题.我要求用户提供Web服务的用户名/密码,并发送快速请求以验证凭据是否正确.如果不是,那么该服务将以401认为应该响应.问题是Safari似乎在我的javascript代码可以处理它之前拦截了这个响应,显示灰色登录框而不是让我处理错误.
我能做些什么吗?我正在使用js库来进行调用,但它在功能上等同于以下jQuery.
$.ajax({
type: "GET",
url: url,
username: username,
password: password,
success: function() { /* handle success */ },
error: function() { /* handle error */ }
});
Run Code Online (Sandbox Code Playgroud)
据我所知(在自己遇到此问题之后),您将无法使Safari停止拦截401
。如果这些发现是正确的,则唯一的方法是创造性地使用(错误:-)使用其他错误代码,例如403
或使用自定义代码(请参阅下文)。
当然,这假定您有权更改从Web服务发送回的状态代码(对于是否也开发了Web服务的问题尚不完全清楚)。
403
,当然是说“您已经通过身份验证,但无权访问此资源”,这是不正确的(因此“滥用”),但至少在我知道的浏览器中没有副作用。
400
有时可以用作替代,但由于该请求(“错误请求”)实际上是表示HTTP协议错误,因此可能会引起副作用(从未见过或听说过),但可能会导致某些将来的浏览器或反劫持软件进行的有用尝试,以开始进行故障排除/诊断)。
412
是我见过使用的另一种替代方法(“前提条件失败”),但这实际上是表示服务器没有达到请求集的前提条件。
或者,您可以弥补自己的非标准4xx
错误-例如461
-允许的错误(例如,注意Twitter具有自定义420
状态代码)
归档时间: |
|
查看次数: |
2609 次 |
最近记录: |