纯文本/文本的Angular 8 / httpclient错误响应,无法解析响应

时间:2019-12-18 13:34:03

标签: angular spring-boot http angular-httpclient

在浏览器上显示此错误。我正在测试Springboot并试图实现承载身份验证。我将令牌作为文本返回。

error: Object { error: SyntaxError, text: "Bearer eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJpdm9uZXRlYnJ1bmFAYm9sLmNvbS5iciIsImV4cCI6MTU3NzUzODgzMH0.oUMmxd65XJtdfLKmlhbczp3-u1LIGzfzCla0RyKeIy0PKlq4upxd_7NtxfMspFCtpniuqsiwpGjpH_yWTrDbqg" }
​
headers: {…}
​​
lazyInit: function lazyInit()
​​
lazyUpdate: null
​​
normalizedNames: Map(0)
​​
<prototype>: Object { … }
​
message: "Http failure during parsing for http://localhost:8080/login"
​
name: "HttpErrorResponse"error: Object { error: SyntaxError, text: "Bearer eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJpdm9uZXRlYnJ1bmFAYm9sLmNvbS5iciIsImV4cCI6MTU3NzUzODgzMH0.oUMmxd65XJtdfLKmlhbczp3-u1LIGzfzCla0RyKeIy0PKlq4upxd_7NtxfMspFCtpniuqsiwpGjpH_yWTrDbqg" }
​
headers: {…}
​​
lazyInit: function lazyInit()
​​
lazyUpdate: null
​​
normalizedNames: Map(0)
​​
<prototype>: Object { … }
​
message: "Http failure during parsing for http://localhost:8080/login"
​
name: "HttpErrorResponse"

我的服务设置如下:

 logar (credenciais: Credenciais): Observable<any> {


    const httpOptions = {
      headers: new HttpHeaders({'Content-Type': 'application/json',  accept: 'text/plain'})
    };
    return this.http.post("http://localhost:8080/login", credenciais, httpOptions);
  }

我不是HTTP标头方面的专家,但是我发现,来自Spring的响应没有内容类型,这很奇怪。这是响应:

HTTP/1.1 200 
Access-Control-Allow-Credentials: true
Access-Control-Allow-Origin: http://localhost:4200
Vary: Origin
Access-Control-Allow-Methods: *
Access-Control-Allow-Headers: Origin, X-Requested-With, Authorization, Content-Type, Accept, X-CSRF-TOKEN
Access-Control-Max-Age: 3600
Authorization: Bearer eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJpdm9uZXRlYnJ1bmFAYm9sLmNvbS5iciIsImV4cCI6MTU3NzUzOTc5NH0.-YOzULQnPD6aDIoxzqOQbxbCOpZChJni2FKCazLr-0jTe6ExwwAT8L9V4m5qUoJ68jDz71aE2lrbSbmWPciWCQ
X-Content-Type-Options: nosniff
X-XSS-Protection: 1; mode=block
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: DENY
Content-Length: 182
Date: Wed, 18 Dec 2019 13:29:54 GMT
Keep-Alive: timeout=60
Connection: keep-alive

我可以在浏览器控制台上看到来自服务器的响应。问题是解析响应。响应可用,但我无法操纵它。我该如何修改?

1 个答案:

答案 0 :(得分:0)

尝试将{responseType:'text'}添加到http选项列表中。

const httpOptions = {
  headers: new HttpHeaders({'Content-Type': 'application/json',  accept: 'text/plain'})
  responseType: 'text'
};