2017-09-24 142 views
1

我有本地Angular4應用程序試圖發佈到本地django服務器。問題是我在http.post()中遇到錯誤,但我不認爲它是由CORS(我正在設法使用android應用程序使用此API的問題引起的,並且我沒有看到任何錯誤消息在Angular-app中關於Access-Control-Allow-Origin)。請在下面找到我的代碼:無法發佈到本地服務器

// get token from the server 
const body = { 
    username: 'username', 
    password: 'password' 
}; 
this.http.post('http://website.loc/api/auth/login/', body).subscribe(
    res => { 
     console.log('res:' + res); 
    }, 
    (err: HttpErrorResponse) => { 
     console.log('err'); 
     console.dir(err); 
    } 
); 

這是我得到的錯誤(似乎這不是能夠讀取URL):

{headers: Object, status: 0, statusText: "Unknown Error", url: null, ok: false, name: "HttpErrorResponse", message: "Http failure response for (unknown url): 0 Unknown Error", error: ProgressEvent error} 

任何線索什麼可能導致這些類型的問題?

+0

這不是Angular的問題。這是您的服務器上的錯誤。請檢查您是否返回有效的JSON – TheUnreal

+0

@TheUnreal My服務器實際返回一個對象({「auth_token」:「value」}。是否有辦法讓Angular接受這種輸出?否則輸出結果如何? – h4k1m

回答

1

您需要找到實際問題,它可能會跨域問題。在android中,原生應用程序不使用瀏覽器,它直接調用web api並跨域僅在瀏覽器中。

要查找實際問題,請打開開發人員工具並查看控制檯。如果您看到類似跨域或拒絕訪問的消息。這是跨域問題。您必須在服務器中配置cors。如果沒有cors問題,請參閱網絡活動中的服務器響應。您可以在網絡活動中看到實際的服務請求和失敗原因。在角度緩存塊中,您無法從配置中獲得實際問題。

這也可能發出呼叫請求從httpsnon https url。瀏覽器不允許調用從httpsnon https url的ajax請求。

要解決問題,您必須通過開發人員控制檯工具查找實際問題。

+0

在firefox的web開發工具'console'選項卡中,我沒有看到任何跨域問題,我會盡量在服務器上進行配置,看看它是否解決了這個問題。 https,只是普通的http。 – h4k1m

+0

你可以嘗試chrome中的開發者工具來獲取實際的請求,並在postmen中使用相同的參數調用相同的api如果我們得到錯誤,請與服務器問題,否則需要做一些角度,可能是intercepter的問題if你正在使用 –

+0

我已經設法從命令行調用相同的命令'curl',是不是一樣?有沒有辦法讓Angular對這個錯誤更詳細? – h4k1m

相關問題