net::ERR_EMPTY_RESPONSE Angular 4 中的 DELETE 方法出错?
net::ERR_EMPTY_RESPONSE error on DELETE Method in Angular 4?
我正在使用以下方法删除数据
return this.http.delete(this.ApiURL, new RequestOptions({headers: headers,body: body }))
.map((res: Response) => res.json());
但是 net:: ERR_EMPTY_RESPONSE
当我在 POSTMAN 中 运行 时,它被成功删除了。
请指导
在您的情况下,服务器 returns 一个空的 HTTP 响应正文和状态 200 OK。但是,HttpResponse
的 .json()
方法期望正文是有效的 JSON 字符串。由于您没有正文,因此 .json()
方法会引发 Unexpected end of JSON input
错误。您也没有 .catch()
,这个未处理的错误会传播到浏览器控制台。
解决此问题的一种方法是,如果您有权访问服务器端代码。您可以将 DELETE
方法的成功响应状态代码更改为 204
("No content")。这样 .json()
方法就不会抛出错误,因为它期望响应主体为空。
另一种方式是想当然地认为如果状态码是200
,则删除成功,而不是在响应对象上调用.json()
。
我正在使用以下方法删除数据
return this.http.delete(this.ApiURL, new RequestOptions({headers: headers,body: body }))
.map((res: Response) => res.json());
但是 net:: ERR_EMPTY_RESPONSE
当我在 POSTMAN 中 运行 时,它被成功删除了。
请指导
在您的情况下,服务器 returns 一个空的 HTTP 响应正文和状态 200 OK。但是,HttpResponse
的 .json()
方法期望正文是有效的 JSON 字符串。由于您没有正文,因此 .json()
方法会引发 Unexpected end of JSON input
错误。您也没有 .catch()
,这个未处理的错误会传播到浏览器控制台。
解决此问题的一种方法是,如果您有权访问服务器端代码。您可以将 DELETE
方法的成功响应状态代码更改为 204
("No content")。这样 .json()
方法就不会抛出错误,因为它期望响应主体为空。
另一种方式是想当然地认为如果状态码是200
,则删除成功,而不是在响应对象上调用.json()
。