2011-08-04 126 views
3

我需要檢查新註冊的域是否已從用戶瀏覽器完全註冊/傳播,以便我可以確保他們有權訪問它。檢查用戶是否可以訪問跨域外部資源

我對網站有完全的控制權,並且需要檢查目標域上是否存在像文本文件一樣簡單的內容,如果有,我們很樂意去。我可以編輯請求頁面和目標資源。我猜這必須是某種類型的jQuery ajax檢查。

我無法做到這一點在PHP中,因爲雖然我的DNS服務器已經propgated,最終用戶可能沒有。

回答

0

通過大量的心痛與此同一起源策略去了。最終最可靠的/兼容的方式是加載<img>標籤與目標服務器上的圖像和檢查jQuery中的.load.error處理程序。問題是你需要設置img AFTER的src來綁定錯誤處理程序。

<img id="check" width="1" height="1" /> 
<script type="text/javascript"> 
$(function() { 
    $("#check").error(function(){ 
     // It failed 
    }).attr('src', 'http://domain.com/px.gif'); 

    $('#check').load(function() { 
     // It worked 
    }); 
}); 
</script> 
1

假設你不介意在您的網站的jQuery扔,這樣的事情應該工作作爲一個框架:

$.ajax('http://www.example.com/text.txt', { 
    success: function(result) { 
     alert('User has access'); 
    }, 
    error: function() { 
     alert('User does not have status'); 
    } 
}); 

相反的,而那些沒用alerts,你可以這樣做:

success: function() { 
    $.get('http://1.1.1.1/user-has-access.php?access=true'); 
}, 
error: function() { 
    $.get('http://1.1.1.1/user-has-access.php?access=false'); 
} 
+1

這不會因爲同源策略的工作。 – Dunhamzzz

2

你不能使用AJAX調用,因爲它會被相同的原始策略阻塞。

但是你可以使用iframe的代替:

<iframe id="check_1" src="http://www.wikipedia.com"></iframe> 
<iframe id="check_2" src="http://www.aasdjflajsdflasdf.com"></iframe> 

<script type="text/javascript"> 

    $(document).ready(function() { 

    $('iframe#check_1').load(function() 
    { 
     alert("check 1 succeeded!"); 
    }); 

    $('iframe#check_2').load(function() 
    { 
     alert("check 2 succeeded!"); 
    }); 

    }); 

</script> 
+0

他對這個網站讓他可以添加訪問控制請求報頭 –

+0

這不是工作100%的時間,可以做到與加載順序完全控制? – Dunhamzzz