2013-02-10 111 views
0

我正在使用domainAPI站點(目前免費)來處理域可用性檢查。他們的簡要文件是here如何使用jQuery Ajax發送身份驗證標頭

我是新來的大多數人,所以我可能會忽略一些明顯的東西。標題的第二部分是我的用戶名和密碼,以格式username:password加密爲base64。如果我直接訪問網址,那麼相同的用戶名和密碼會成功訪問我。

我到目前爲止的代碼如下,這仍然失敗:

$('#domain').keyup(function() { 
    $("#loading").show(); 
    $.ajax({ 
     url: 'http://api.domainapi.com/v1/availability/example.com', 
     type: 'GET', 
     datatype: 'json', 
     success: function() { alert("Success"); }, 
     error: function() { alert('Failed!'); }, 
     beforeSend: function setHeader(xhr) {xhr.setRequestHeader('Authorization', 'Basic ZW1iZXJza2VjaDp6eWFrc21hdnNvenY=');} 
    }); 
}); 
+0

通常,標頭設置在服務器端(如PHP)。原因認證需要一些服務器檢查和會話集。 – 2013-02-10 07:17:36

回答

0

它看起來像你運行到跨域問題在這裏。

如果服務器啓用了CORS支持(請參閱http://en.wikipedia.org/wiki/Cross-origin_resource_sharing以獲取更多信息),那麼AJAX請求只能跨域執行,並且api.domainapi.com的快速檢查並不表示它會這樣做。如果你打開瀏覽器的控制檯,你應該會收到一條錯誤消息。

爲了解決這個問題,你需要在你自己的服務器上實現某種代理(這是因爲它運行在與你的網頁相同的域上,應該可以用作AJAX'目標'),將轉發請求到api.domainapi.com

+0

感謝您的回覆!我明白你的意思。創建一個訪問domainapi網站的php頁面,並使用ajax訪問該頁面。 domainapi網站爲我提供了一些頭文件用於提出請求,但我並不確定如何製作一個能夠做到這一點的PHP頁面。我需要使用cURL還是什麼?這是我的: <?php header(「GET/encrypted-area HTTP/1.1」); header(「Host:api.domainapi.com/v1/availability/freedomain.com」); header(「Authorization:Basic ZW1iZXJza2VjaDp6eWFrc21hdnNvenY =」); ?> – themartin 2013-02-10 09:01:57

+0

如果您總是使用您自己的用戶名/密碼來檢查域的可用性,請通過域名檢查使用PHP頁面的'.ajax'請求,執行從PHP到'api的請求。 domainapi.com'(使用cURL聽起來不錯,但我不做PHP),並返回結果(所以'$ .ajax'可以處理它)。 – robertklep 2013-02-10 09:07:51