2013-07-17 119 views
1

我試圖發送一個auth請求由GlassFish服務器託管4一個servlet,以純文本格式接收回來的消息。發送jQuery的AJAX認證請求GlassFish服務器失敗

該servlet配置爲機密運輸基本身份驗證(HTTPS) (認證,並通過使用Web瀏覽器訪問該頁面的servlet的答案工作)

這裏是jQuery腳本用ajax:

$.ajax 
({ 
    type: "GET", 
    url: "https://192.168.146.128:8181/path_to_servlet", 
    dataType: 'text', 
    beforeSend: function(xhr) { 
     xhr.setRequestHeader("Authorization", "Basic " + btoa("username:password")); 
    }, 
    async: false, 
    success: function (data){ 
     alert(data); 
    } 
}); 

和servlet代碼:

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { 

    response.setContentType("text"); 
    PrintWriter out = response.getWriter(); 
    out.println("hello"); 
    out.close(); 

} 

的問題是,該請求沒有得到任何答覆任何類型(嘗試在IE瀏覽器,鉻和Firefox與相同的結果)。

我該怎麼辦?這是認證的正確方法嗎? 。我還需要發送每進一步請求頭授權請求?

回答

0

jQuery的阿賈克斯對象允許「用戶名」和「密碼」特性,不要試圖硬編碼的授權頭。

每HTTP規範,您發送請求數據,如果是確保你得到拒絕訪問的響應,對此您有Authorization頭回答。

如果當您手動訪問它比你的服務器不工作,可能是配置錯誤發送客戶端接入控制允許頭標頭不具有允許的Authorization頭。如果當你正在做手工(不使用Ajax),比它的可能是跨域問題的作品,或許你可以在你使用來檢查請求的響應或者任何警告檢查瀏覽器的錯誤控制檯或開發工具/錯誤被拋出。