2014-11-21 59 views
0

試圖從角度做一些基本的REST服務,但我所得到的只是一個空的錯誤響應。角js空錯誤響應

我直接打開index.html我的電腦上(不知道這是問題),然後單擊「登錄」最終調用我的控制器:

$scope.doLogin = function() 
    { 
    var pr = $http.get('http://localHost:7777/BuilderDBSvc/login', {params: {user: $scope.userid, pass: $scope.password} }) 
    .success(function(data) 
     { 
     console.log(data); 
     domains = data; 
     }) 
     .error(function(data, status, headers, config) 
     { 
     console.log(data) 
     console.log(status) 
     console.log(headers) 
     console.log(config) 
     }); 
    pr.then(function(data) 
    { 
     $scope.user = data.data; 
    }); 
    }; 

使用Firefox的調試,我把所有3個功能中的斷點:successerrorthen。但只有'錯誤'被觸發。請求總是以紅色顯示,但是有200個響應代碼。響應數據顯示23個字節的大小,但該值始終爲空。

但是,如果我直接在我的瀏覽器窗口中鍵入URL和參數,它工作正常,並顯示預期的json字符串。

我以前使用過這種模式,但是與nodejs和angularjs一起工作。但是這次REST提供者是一個非Java應用程序。我懷疑是這個問題,但是當我直接在瀏覽器中輸入REST url時,它工作正常。

我在這裏錯過了什麼?
有沒有更好的工具可以用來幫助調試呢?


注:
是的,這是一個非常不安全的方式做認證,但我的出發點。

回答

0

由於請求不會來自本地主機,因此本地主機服務器將阻止請求在Chrome控制檯中阻止交叉來源請求,您很可能會看到消息說

XMLHttpRequest無法加載'http://localhost:7777'。請求的資源上沒有「Access-Control-Allow-Origin」標題。因此,'你的index.html位置'不允許訪問。

避免你應該要求從http://localhosthttp://localhost(同一臺服務器)或者告訴你的服務器接受跨起源請求

+0

好,我嘗試使用一個Web服務器(默認的Python的Web服務器)的東西,並使用Firefox的更新版本。這個問題的確與跨站點腳本有關。由於我可以控制端口7777上的服務器,因此我可以添加適當的標題以允許CORS。但谷歌搜索給出了很多衝突的信息...我需要添加什麼標題(S)? – Jon 2014-11-26 19:15:55

+0

你究竟想要達到什麼目的?和你得到什麼錯誤? – Strife86 2014-11-27 14:45:04

+0

順便說一下你是否在你的請求中加入'withCredectials'選項設置爲true?幫助您瞭解旅遊問題,我認爲這對您的問題有用http://www.html5rocks.com/en/tutorials/cors/ – Strife86 2014-11-27 14:49:24