2016-05-14 66 views
0

我試圖連接到外部POST api進行身份驗證。 我想:從角度連接到REST API

$http({ 
    method : 'POST', 
    url  : 'myURL', 
    data : {"j_username": "myUserName,"j_password": "myPassword"}, 
    headers : { 
     'Content-Type': 'application/x-www-form-urlencoded', 
    } 
}) 

但我發現了這個錯誤:

的XMLHttpRequest無法加載http://...url。預檢的響應爲 無效(重定向)

+0

也許dup http://stackoverflow.com/q/33660712/367865 – Ouroborus

+0

錯誤是告訴你,當請求時這個URL重定向到另一個。選中此[回答](http://stackoverflow.com/a/36221621/1488993)以獲取更多詳細信息。 – Doon

+0

你有一個缺少「myUserName後標記太 – rrd

回答

2

這看起來像是一個CORS問題。 如果JavaScript是從不同的域中提供的,那麼您將遇到CORS問題。簡而言之,瀏覽器會檢測到javascript是從域A提供的,並且API是在域B.接下來發生的事情取決於您正在嘗試做什麼,在這種情況下您正在執行POST,這意味着瀏覽器將會發送一個預檢檢查到API服務器,詢問是否可以使用來自域A的JavaScript訪問它。 爲了讓瀏覽器允許請求通過,服務器必須回答「是」(實際上它比「說是」要複雜得多,但你明白了)。

總之,您需要配置API服務器以允許這樣做。如果它不是你的API,那麼你需要詢問誰擁有該API,如果他們可以配置CORS以允許你的JavaScript訪問它。

如果您確實需要使用這種設置,那麼值得花時間閱讀並理解它。另一方面,也許你只是用一個本地js文件加入一些東西,在這種情況下,你只需要知道它不會像那樣工作。請參閱https://stackoverflow.com/a/23824093/11534

+0

服務器沒有迴應說*」是「* ....這是如何CORS工作的簡單化 – charlietfl

+0

@charlietfll - 絕對同意我只是想解釋的基本問題: ) – Frans

+0

我需要做更多的配置嗎? –