请求未执行(未知错误)

时间:2018-05-03 13:02:36

标签: angular firefox jersey-2.0 angular-httpclient

我目前正在开发一个带有java后端的角度应用程序。到目前为止,一切似乎都有效,但现在我遇到了一个无法解释的问题。有一个GET请求不起作用。其他一切都有效。但有趣的是,它只适用于Firefox。

当我打印出显示在控制台中的obrable的错误时:

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

当我查看网络选项卡时,不会执行请求。甚至没有预检OPTIONS请求。

我有几个提示,我将成为一个CORS问题。但我相信这不是这种情况。我的CORS标头设置正确:

Access-Control-Allow-Headers: X-Requested-With, Content-Type, Authorization
Access-Control-Allow-Methods: GET, POST, DELETE, PUT, OPTIONS, HEAD
Access-Control-Allow-Origin: *
Content-Type: application/json

(通常我会为CORS标题设置一个更具体的域列表,但我将其设置为'*'以确保)

无效的请求位于资源/ads/:id上。 /ads上的请求和所有其他请求都可以正常运行。 所有资源都通过Jersey实现。并且相关请求不受任何身份验证或授权。

回顾一下:只有一个只在Firefox中的请求不起作用。 如果我直接去URL(不是通过角度),一切正常。

我在这里有点绝望。任何帮助表示赞赏。

澄清

  • 开发者控制台中没有错误或其他内容(在firefox和chrome中都没有)
  • 网络标签中没有请求从浏览器中删除
  • 服务器端没有请求
  • 上面的
  • 错误来自console.log(err)
  • 使用了角度v5.2.9和HttpClient

缩小问题范围

我的完整网址是http://localhost:8080/api/v1/ads/1。 猜猜问题是/ads部分。 我完全不知道究竟是什么原因造成的。 我尝试了其他几个网址,例如/ad /adsf /adsa等等,所有网址都有效。

我还将Angular缩小到这个范围:

import { Component, OnInit } from '@angular/core';
import { AdService } from '@app/shared/services/ad/ad.service';
import { HttpClient } from '@angular/common/http';

class Ad {
  id: number;
  title: string;
}

@Component({
  selector: 'fwas-ad-detail',
  template: `
  <div *ngIf="isError">
    <h1>Error</h1>
  </div>
  <div *ngIf="!isError">
    <h1>{{ad?.title}}</h1>
  </div>
  `
})
export class AdDetailComponent implements OnInit {

  url = 'http://localhost:8080/api/v1/ads';
  ad: Ad;
  isError = false;

  constructor(private http: HttpClient) { }

  ngOnInit() {
    const queryUrl = this.url + '/' + '1';
    this.http.get<Ad>(queryUrl).subscribe(
      data => { this.ad = data; },
      err => { this.isError = true; }
    );
  }
}

我也尝试过json server,但效果很好。

所以问题只存在于以下内容:

  • 上面的角度5代码
  • Firefox 59.0.3(64位)
  • Jersey2 / Jackson2 API
  • 网址中有/ads,但不是最后一部分(http://localhost:8080/api/v1/ads一直有效)

我找到了一个针对我的解决方法(不在网址中使用广告),但如果有人感到无聊并且想要解决这个问题,我很想知道这个神秘的究竟是什么原因。

0 个答案:

没有答案