Angular2:检测来自HTTP帖子

时间:2016-05-30 11:08:27

标签: http error-handling angular

我不能从http post

中删除错误

我的mservice的一部分(http post方法)

addApplicationLink(applicationLink: ApplicationLink){
    let body = JSON.stringify(applicationLink);
    let requestHeaders = new Headers();
    var headers = new Headers();
    headers.set('Content-Type',  ['application/json; charset=utf-8']);
     let reqoptions =  new RequestOptions({
        headers: headers
    });
    return this._http.post(this._applicationLinksUrl + this._linkServicePath,body,{headers: headers});

在我的组件中:

addApplicationLink() {
    //todo
    this.addNewLink = false;
    /* check if must be done after call real rest service */
    //this.applicationLinks.push(this.applicationLinkAdd);
    this._applicationLinkService.addApplicationLink(this.applicationLinkAdd)

        .subscribe(data => {
            this.applicationLinks.push(this.applicationLinkAdd)
        },
        error => {
            // handle error
            console.error('this an erreor ' + error.status)
        }
        )

当用户尝试添加两个相同的应用程序链接时,后端会返回错误409 但是当我执行时,error.status在浏览器控制台中显示200 我也在浏览器控制台中看到了 XMLHttpRequest无法加载http://localhost:7001 ......请求的资源上没有“Access-Control-Allow-Origin”标头。因此,不允许原点“http://localhost:3000”访问。响应的HTTP状态代码为409。

rem:Http post是用json创建的,因此有一个prefligth调用

你有想法拦截错误409吗?

1 个答案:

答案 0 :(得分:2)

实际上,您的服务器不会发回CORS标头(缺少Access-Control-Allow-Origin'标头)。这可以防止浏览器在浏览器中向Angular2应用程序提供实际的409错误。

您需要首先修复服务器上的问题,然后才能看到409错误。

有关CORS如何工作的更多详细信息,您可以查看本文: