我們的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