我们的Web应用程序将作为具有SSO的系统的一部分进行部署。会话超时后,我的XmlHttpRequests被重定向到一个登录页面,我们无法控制这个。Javascript:检查文本是否为有效的完整HTML文档
在每个AJAX响应处理程序上,我必须检查响应文本是否为完整的HTML页面。 (HTML片段和JSON是有效的响应。)
我必须承认我对客户端技术很陌生。我赶上完整的HTML页面,如下所示:
if (data.search(/<html>/) > -1) { ... }
我认为这是可怕的效率低下,依赖于我们的约定,并可能在未来引入微妙的错误。 特别是考虑到有一个完整的网页浏览器,其主要目的是解析HTML ...
请分享更优雅的解决方案,以识别文本为完整的HTML文档!
(jQuery是已经在项目中使用。)
闭幕编辑:
我在有点咸菜中选择一个答案接受,因为该解决方案似乎是一个复合从评论的二加思路:
我会为JSON和HTML片段单独验证:
在哪里我期待JSON,响应必须成为JSON。
在我期待HTML片段(而不是完整文档)的情况下,响应必须以结束标记(忽略空白)结束,但不能(不区分大小写)。 SSO登录页面必须结束,我们将记录此“限制”。
感谢大家的贡献!
的''开始标记是可选的,不区分大小写,并且可以具有属性(如果存在)。 – Quentin
澄清:我期待的AJAX片段和JSON将不包含,
,标记,但在更常见的情况下(没有超时,预期的响应),搜索这些代码似乎很昂贵。 – Szocske您可以始终将您的服务器 - 在发生超时时,HTTP代码会为HTTP响应添加一个特殊的头文件。我就是做这个的。然后,客户端XHR代码可以查找该头文件;如果它在那里,它知道有一个超时,可以重定向自己。 – Pointy