[問題] JS有辦法得知連結的伺服器狀態嗎?

看板Ajax作者 (EXSA)時間7年前 (2017/03/02 14:12), 7年前編輯推噓7(7016)
留言23則, 7人參與, 最新討論串1/1
功能需求是要去一一檢查特定的網址,當中如果有網站掛掉的話會通報管理者 目前的想法是用迴圈的方式將網址代入iframe,但不知道有甚麼方法可以取得iframe內網站伺服器的狀態 請問JavaScript有辦法做到這樣的功能嗎?還是說必須用其他的工具才能達成這個功能呢? -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 220.133.229.31 ※ 文章網址: https://www.ptt.cc/bbs/Ajax/M.1488435152.A.F95.html

03/02 14:22, , 1F
XMLHttpRequest 送出去→等 readystate >= 2→查 .status
03/02 14:22, 1F

03/02 14:23, , 2F
這應該可行...
03/02 14:23, 2F

03/02 14:23, , 3F
這個 status 值是 HTTP status code (200, 404 之類的東西)
03/02 14:23, 3F
謝謝,因為還是初學者不知道怎麼下關鍵字 理論上是不是只要向該網址發出請求也不用特意將網頁內容顯示呢? ※ 編輯: gn00386614 (220.133.229.31), 03/02/2017 14:27:47

03/02 22:49, , 4F
這其實是最基本的 ajax 套路, 關鍵字就是 XMLHttpRequest
03/02 22:49, 4F

03/02 22:50, , 5F
readyState 2 表示收到 HTTP header 了, 大致上就能判斷
03/02 22:50, 5F

03/02 22:51, , 6F
你要查詢的東西; 一般你去找的資源多半會說 readyState 4
03/02 22:51, 6F

03/02 22:51, , 7F
那是代表他需要內容所以才要到 4 才能操作
03/02 22:51, 7F

03/02 22:51, , 8F
而你只是要檢查網站是否正常回應, 這樣 2 就足以判斷了
03/02 22:51, 8F

03/02 22:57, , 9F
要注意跨網域(CORS)的問題
03/02 22:57, 9F
再次感謝,昨天爬了一下午的文,目前跨域問題仍無法解決,使用的環境是tomcat8.5 照網路上去設置Access-Control-Allow-Origin的filter還是沒辦法只靠前端來取得HTTP的回應 難道非要搭配後端不可嗎? ※ 編輯: gn00386614 (220.133.229.31), 03/03/2017 09:33:14

03/03 09:47, , 10F
Access-Control-Allow-Origin是你要連的那些網站要設喔
03/03 09:47, 10F

03/03 13:23, , 11F
取巧的辦法是在目標server上擺一隻js檔 內容是將某個
03/03 13:23, 11F

03/03 13:24, , 12F
廣域變數設為某個值 然後setInterval不斷載入該scrip
03/03 13:24, 12F

03/03 13:24, , 13F
t 只要確認該廣域變數的值有被改變就代表server沒問
03/03 13:24, 13F

03/03 13:24, , 14F
題 沒被改變就代表server down了
03/03 13:24, 14F

03/03 13:25, , 15F
這其實也算是jsonp的應用(?)
03/03 13:25, 15F

03/04 12:27, , 16F
ifrma不能access不同domain的東西但我記得可以用postMessage
03/04 12:27, 16F

03/04 12:27, , 17F
但是要請對方加
03/04 12:27, 17F

03/04 12:28, , 18F
*iframe
03/04 12:28, 18F

03/05 00:28, , 19F
最近看到有es6標準可用的fetch 做這個比xhr寫定義感
03/05 00:28, 19F

03/05 00:28, , 20F
覺快多了
03/05 00:28, 20F

03/05 00:29, , 21F
跨網域問題chrome有plugin可以試試看
03/05 00:29, 21F

03/10 19:27, , 22F
有跨網域問題的話可以改用 Img
03/10 19:27, 22F

03/10 19:28, , 23F
然後判斷圖片有無正常載回
03/10 19:28, 23F
文章代碼(AID): #1OjxVG-L (Ajax)
文章代碼(AID): #1OjxVG-L (Ajax)