让我从一个真实的用例开始:
当服务器端身份验证过滤器由于会话过期而尝试将 AJAX 请求重定向到登录页面时,DWR会感到困惑。您想添加一些过滤器,以便
- HTTP 状态码等于3xx的请求会执行客户端重定向,例如window.location = ...login.html
- 状态码等于2xx的请求将被转发 - 不变 - 到任何已注册的处理程序,如 DWR。
- 其他代码,如4xx可能会触发警报,而不是消失在深渊中。
我可能不必解释为什么这种功能会有用。大多数服务器端 Web 框架都支持拦截器模式,原因与您可能希望在客户端上使用它的原因相似。
一种(可能是坏的)实现可能涉及将原始 XMLHttpRequest 对象包装在接受某些过滤器功能的代理中。由于 jQuery、Prototype、ExtJS 等都已经包装了本机浏览器 AJAX 对象,这可能是一个额外的步骤。
这可以本地实现吗?有哪些技术挑战?以前有过这样的事情吗?