2016-03-05 140 views
0

當我運行我的AngularJS登錄到我的後端時,出現內部問題。我可以用異常處理來解決這個問題,但真正的問題仍然存在。我想使用基本身份驗證方法,因此,我呼籲這在我的客戶端代碼:假https請求失敗服務器

function Login(username, password) { 

     var authdata = CreateLoginHeader(username, password); 
     var config = { 
       withCredentials: true, 
       headers: { 'Authorization': authdata, 'Content-Type', 'application/json' } 
     }; 
     $http.post('http://brain-ratmap.rhcloud.com/api/v1/brain/study/login', config).then(SuccessLogin, ErrorLogin); 
    } 

function CreateLoginHeader(username, password) { 
     var authdata = btoa(username + ':' + password); 
     return 'Basic uIg' + authdata; 
    } 

當我火了這一點,我在JS得到這個錯誤:

的XMLHttpRequest無法加載http://XXXX/api/v1/login。請求的資源上沒有「Access-Control-Allow-Origin」標題。因此不允許訪問原產地'http://YYYY'。響應有HTTP狀態代碼500.

而且就像我說的,我知道如果我會處理我的異常,並仍然會返回一個響應,那麼這種POST方法應該工作。但是我所要求的是,我的基本認證不起作用 - 當我在服務器端獲得我的請求時,標頭中的Authenticate值不包含任何其他的「Basic」。

這裏也是我的所有標頭值的日誌輸出[密鑰;值的大小;值1個索引]:

2016年3月5日13:52:50610 INFO [brain.ratmap.rhcloud.com .web.service.StudyManagerService](默認任務-2)標題鍵是:Accept 2016-03-05 13:52:50,612 INFO [brain.ratmap.rhcloud.com.web.service.StudyManagerService](默認任務-2 )1 2016-03-05 13:52:50,612 INFO [brain.ratmap.rhcloud.com.web.service.StudyManagerService](默認任務-2)application/json,text/plain,/ 2016-03 -05 13:52:50,612 INFO [brain.ratmap.rhcloud.com.web.service.StudyManagerService](默認任務-2)標題密鑰爲:Accept-Encoding 2016-03-05 13:52:50,612 INFO [brain.ratmap.rhcloud.com.web.service.StudyManagerService](默認任務-2)1 2016-03-05 13:52:50,613 INFO [brain.ratmap .rhcloud.com.web.service.StudyManagerService](默認任務-2)gzip,deflate 2016-03-05 13:52:50,615 INFO [brain.ratmap.rhcloud.com.web.service.StudyManagerService](默認任務-2)標題鍵是:Accept-Language 2016-03-05 13:52:50,615 INFO [brain.ratmap.rhcloud.com.web.service.StudyManagerService](默認任務-2)1 2016-03-05 13:52:50,616 INFO [brain.ratmap.rhcloud.com.web.service.StudyManagerService](默認任務-2)en-US,en; q = 0.8

2016-03-05 13:52: 50,616 INFO [brain.ratmap.rhcloud.com.web.service.StudyManagerService](默認ta SK-2)標題密鑰是:授權

2016年3月5日13:52:50617 INFO [brain.ratmap.rhcloud.com.web.service.StudyManagerService](默認任務-2)頭值是尺寸1

2016年3月5日13:52:50618 INFO [brain.ratmap.rhcloud.com.web.service.StudyManagerService](默認任務-2)頭值包含關於第一索引基本

2016-03-05 13:52:50,620信息[brain.ratmap.rhcloud.com.web.service.StudyManagerService](默認任務-2)標題鍵是:連接 2016-03-05 13 :52:50,621 INFO [brain.ratmap.rhcloud.com.web.service.StudyManagerService](默認任務-2)1 2016-03-05 13:52:50,629 INFO [brain.ratmap.rhcloud.com.web。 service.StudyManagerService](默認任務-2)Keep-Alive 2016-03-05 13:52:50,630 INFO [brain.ratmap.rhcloud.com.web.service.StudyManagerService](默認任務-2)標題密鑰爲:內容長度 2016-03-05 13:52:50,630 INFO [brain.ratmap.rhcloud.com.web.service。StudyManagerService](默認任務-2)1 2016-03-05 13:52:50,630 INFO [brain.ratmap.rhcloud.com.web.service.StudyManagerService](默認任務-2)90 2016-03-05 13 :52:50,630信息[brain.ratmap.rhcloud.com.web.service.StudyManagerService](默認任務-2)標題密鑰是:Content-Type 2016-03-05 13:52:50,630 INFO [brain.ratmap。 rhcloud.com.web.service.StudyManagerService](默認任務2)1 2016-03-05 13:52:50,631 INFO [brain.ratmap.rhcloud.com.web.service.StudyManagerService](默認任務-2)應用/ JSON;字符集= UTF-8 2016年3月5日13:52:50631 INFO [brain.ratmap.rhcloud.com.web.service.StudyManagerService](默認任務-2)標題密鑰是:主機 2016- 03-05 13:52:50,631 INFO [brain.ratmap.rhcloud.com.web.service.StudyManagerService](默認任務-2)1 2016-03-05 13:52:50, 631 INFO [brain.ratmap.rhcloud.com.web.service.StudyManagerService](默認任務-2)brain-ratmap.rhcloud.com 2016-03-05 13:52:50,631 INFO [brain.ratmap.rhcloud.com .web.service.StudyManagerService](默認任務-2)標題鍵是:Origin 2016-03-05 13:52:50,631 INFO [brain.ratmap.rhcloud.com.web.service.StudyManagerService](默認任務-2 )1 2016年3月5日13:52:50631 INFO [brain.ratmap.rhcloud.com.web.service.StudyManagerService](默認任務-2)http://rat-investigation.rhcloud.com 2016年3月5日13:52:50632 INFO [腦.ratmap.rhcloud.com.web.service.StudyManagerService](默認任務-2)標題密鑰是:Referer 2016-03-05 13:52:50,632 INFO [brain.ratmap.rhcloud.com.web.service.StudyManagerService ](默認任務2)1 2016-03-05 13:52:50,632 INFO [brain.ratmap.rhcloud.com.web.service.StudyManagerService](默認噸任務-2)http://rat-investigation.rhcloud.com/ 2016年3月5日13:52:50632 INFO [brain.ratmap.rhcloud.com.web.service.StudyManagerService](默認任務-2)標題密鑰是:用戶代理 2016-03 -05 13:52:50,632 INFO [brain.ratmap.rhcloud.com.web.service.StudyManagerService](默認任務-2)1 2016-03-05 13:52:50,633 INFO [brain.ratmap.rhcloud.com .web.service.StudyManagerService](默認任務-2)Mozilla/5.0(Windows NT 10.0; WOW64)爲AppleWebKit/537.36(KHTML,例如Gecko)鉻/ 48.0.2564.116 Safari瀏覽器/ 537.36 2016年3月5日13:52:50633 INFO [brain.ratmap.rhcloud.com.web.service.StudyManagerService](默認任務爲2)標題鍵是:X-Client-IP 2016-03-05 13:52:50,633 INFO [brain.ratmap.rhcloud.com.web.service.StudyManagerService](默認任務-2)1 2016-03- 05 13:52:50,633 INFO [brain.ratmap.rhcloud.com.web.service.StudyManagerService](默認任務-2)70.75.185.14 2016-03-05 13:52:50,633 INFO [brain.ratmap.rhcloud。 com.web.service.StudyManagerService](默認任務-2)標題密鑰爲:X-Forwarded-For 2016-03-05 13:52:50,633 INFO [brain.ratmap.rhcloud.com.web.service.StudyManagerService] (默認任務2)1 2016-03-05 13:52:50,634 INFO [brain.ratmap.rhcloud.com.web.service.StudyManagerService](默認任務-2)70.75.185.14 2016-03-05 13:52:50,634信息[brain.ratmap.rhcloud.com.web.service.StudyManagerService](默認任務-2)標題密鑰爲:X-Forwarded-Host 2016-03-05 13: 52:50,634 INFO [brain.ratmap.rhcloud.com.web.service.StudyManagerService](默認任務-2)1 2016-03-05 13:52:50,634 INFO [brain.ratmap.rhcloud.com.web.service .StudyManagerService](默認任務-2)brain-ratmap.rhcloud.com 2016-03-05 13:52:50,634 INFO [brain.ratmap.rhcloud.com.web.service.StudyManagerService](默認任務-2)Header關鍵是:X-Forwarded-Port 2016-03-05 13:52:50,636 INFO [brain.ratmap.rhcloud.com.web.service.StudyManagerService](默認任務-2)1 2016-03-05 13: 52:50,636 INFO [brain.ratmap.rhcloud.com.web.service.StudyManagerService](默認任務-2)80 2016-03-05 13:52:50,636 INFO [brain.ratmap.rhcloud.com.web。 service.StudyManagerService](默認任務-2)標題鍵是:X-Forwarded-Proto 2016-03-05 13:52:50,637 INFO [brain.ratmap.rhcloud.com.web.service.StudyManagerService](默認任務 - 2)1 2016-03-05 13:52:50,637信息[brain.ratmap.rhcloud.com.web.service.StudyManagerService](默認任務-2)http 2016-03-05 13:52:50,637信息[ brain.ratmap.rhcloud.com.web.service。StudyManagerService](默認任務2)標題密鑰爲:X-Forwarded-Server 2016-03-05 13:52:50,637 INFO [brain.ratmap.rhcloud.com.web.service.StudyManagerService](默認任務-2) 1 2016-03-05 13:52:50,638 INFO [brain.ratmap.rhcloud.com.web.service.StudyManagerService](默認任務-2)brain-ratmap.rhcloud.com 2016-03-05 13:52 :50,638 INFO [brain.ratmap.rhcloud.com.web.service.StudyManagerService](默認任務-2)標題密鑰是:X-Request-Start 2016-03-05 13:52:50,638 INFO [brain.ratmap。 rhcloud.com.web.service.StudyManagerService](默認任務2)1 2016-03-05 13:52:50,639 INFO [brain.ratmap.rhcloud.com.web.service.StudyManagerService](默認任務-2) t = 1457203970487695

+1

您需要在服務器上啓用CORS並處理OPTIONS預檢請求與POST不同 – charlietfl

+0

我非常確定這不是它。我現在通過捕捉異常來處理異常,並且由於空憑證而拋出了403回。如果情況確實如此,那麼我將不得不重新獲得相同的失敗 - XMLHttpRequest無法加載http:// XXXX/api/v1/login。請求的資源上沒有「Access-Control-Allow-Origin」標題。原因'http:// YYYY'因此不被允許訪問。該響應的HTTP狀態碼爲500. –

+0

我使用了[鏈接1](http://www.developerscrappad.com/1781/java/java-ee/rest-jax-rs/java-ee-7-jax-rs- 2-0-cors-on-rest-how-to-make-rest-apis-accessible-from-a-different-domain /)和[link 2](http://blog.dejavu.sk/2013/11/19/registering-resources-and-providers-in-jersey-2 /)來實施我的申請。這就是爲什麼我認爲問題在客戶端,因爲它應該導致相同的結果,但它不會(POST http:// XXXX/login 403(Forbidden))。 –

回答

0

我發現了問題,正如我懷疑的那樣,問題是客戶端而不是服務器。我沒有正確使用$ http.post方法。我將不得不通過調用$ http.post(url,data,[config])在文檔中使用它 - 該配置包含我需要的所有標題。但因爲我沒有設法調用這樣的函數並傳入配置文件(我使用了Google搜索功能,但是我沒有找到讓數據在沒有錯誤的情況下空白的方法)。這就是爲什麼我剛纔設置的「授權」頭所有的HTTP調用:

var authdata = CreateLoginHeader(username, password); 
     $http.defaults.headers.common.Authorization = authdata; 
     $http.post('http://brain-ratmap.rhcloud.com/api/v1/brain/study/login').then(SuccessLogin, ErrorLogin); 

至少這讓我可以發送POST請求,我在響應回來我的授權令牌。

0

我認爲我的web服務的另一個原因工作是,因爲登錄方法被調用並執行。隨着我的日誌,我可以肯定地說,我的登錄內的代碼正在處理。

這裏是我從開發人員工具全XHR:

請求URL:http://XXXX/login 請求方法:POST 狀態代碼:403禁止 遠程地址:XX.XX.XX.XX:80

響應頭

  1. 訪問控制允許的憑據:真
  2. 訪問控制允許標題:來源,內容類型,接受,授權,auth_token
  3. 訪問控制允許方法:GET,POST,DELETE,PUT
  4. Access-Control-Allow-Origin:*
  5. 連接:保持活動
  6. 的Content-Length:65
  7. 內容類型:應用程序/ JSON
  8. 日期:孫老師,2016年3月6日〇時38分31秒GMT
  9. 保持活動:超時= 15,最大= 99
  10. 服務器:WildFl Y/9
  11. X供電-通過:暗流/ 1

請求頭

  1. 接受:應用/ JSON,文本/無格式,/
  2. 接受編碼:gzip,deflate
  3. Accept-Language:zh-cn,en; q = 0.8
  4. Authoriz通貨膨脹:基本
  5. 連接:保持活着
  6. 的Content-Length:130
  7. 內容類型:應用/ JSON;字符集= UTF-8
  8. 主機:XXXX.com
  9. 產地:http://caller-location
  10. Referer:http://caller-location
  11. User-Agent:Mozilla/5.0(Windows NT 10。0; WOW64)爲AppleWebKit/537.36(KHTML,例如Gecko)Chrome瀏覽器/ Safari瀏覽器48.0.2564.116/537.36

我可以看到,授權頭值只包含 「基本」。這就是我在後端沒有獲得任何更多的原因。並且在附註中,我知道擁有Access-Control-Allow-Origin:*並不是一個好習慣,但是爲了測試目的,它沒有問題。後來我會改變它。從我的調查中,我看到允許的方法不必包含OPTIONS,您只需要捕獲它並返回2XX響應,我正在這樣做。我在this教程中描述了我的後端。

我之前在預檢時遇到了問題,但是我通過這樣做來解決問題here

相關問題