2016-05-31 77 views
0

我試圖檢查網頁上是否存在頁面。我不需要這些內容,只是爲了瞭解網頁是否存在。獲取沒有CORS頭的XHR請求的狀態代碼

try { 
    jQuery.ajax(link, { 
     statusCode: { 
     404: function() { 
      jQuery("#moreInfo").html("not working"); 
     }, 
     200: function() { 
      jQuery("#moreInfo").html("<a href='" + link + "'>Technical Details</a>"); 
     } 
     } 
    }); 
} catch (e) { 
    console.log(e); 
} 

我發現瀏覽器知道它是否有404響應,這是我需要知道的。

我試着運行在控制檯的要求,發現如下:

Internet Explorer中:在一個200響應,IE 11給出了0x2ef1一個錯誤代碼,而在404它說0x80070005

Chrome:404響應會將以下內容添加到缺省的否CORS標頭響應:The response had HTTP status code 404

火狐:記錄的狀態代碼到控制檯,如果網絡信息已啓用 - [HTTP/1.1 404 NOT FOUND 6ms]

有沒有辦法在我的腳本來獲取此信息,並檢查是否請求是成功還是失敗?還是有更好的方法來確定一個頁面是否存在客戶端?

回答

1

有沒有辦法在我的腳本中獲取這些信息並檢查請求是否成功?

不適用於客戶端代碼。

瀏覽器知道並很高興地告訴瀏覽器的用戶,但同一個源策略禁止它告訴你的JavaScript。

您必須使用服務器端代碼執行此操作。

1

如果您嘗試僅檢查頁面是否存在或者不在我們使用的方式下方,

function isValidURL(link) { 
    var encodedURL = encodeURIComponent(link); 
    var isValid = false; 

    $.ajax({ 
     url: "http://query.yahooapis.com/v1/public/yql?q=select%20*%20from%20html%20where%20url%3D%22" + encodedURL + "%22&format=json", 
     type: "get", 
     async: false, 
     dataType: "json", 
     success: function(data) { 
     isValid = data.query.results != null; 
     }, 
     error: function(){ 
     isValid = false; 
     } 
    }); 

    return isValid; 
} 

如果存在,則函數將返回TRUE,否則假