无法发布到本地服务器

问题描述:

我有本地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

您需要找到实际问题,它可能会跨域问题。在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