1
0
mirror of https://github.com/bitwarden/browser.git synced 2024-11-11 10:10:25 +01:00

[PM-10259] improve forwarder rpc error handling (#10330)

* only accept `application/json` responses
This commit is contained in:
✨ Audrey ✨ 2024-07-30 15:39:49 -04:00 committed by GitHub
parent 18ef51449f
commit cbac5fde11
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
5 changed files with 6 additions and 5 deletions

View File

@ -48,7 +48,7 @@ export class RestClient {
const message = await this.tryGetErrorMessage(response);
const key = message ? "forwaderInvalidTokenWithMessage" : "forwaderInvalidToken";
return [key, message];
} else if (response.status === 429 || response.status >= 500) {
} else if (response.status >= 400) {
const message = await this.tryGetErrorMessage(response);
const key = message ? "forwarderError" : "forwarderUnknownError";
return [key, message];
@ -59,6 +59,7 @@ export class RestClient {
const body = (await response.text()) ?? "";
// nullish continues processing; false returns undefined
// FIXME: inspect content-type header to determine extraction process
const error =
this.tryFindErrorAsJson(body) ?? this.tryFindErrorAsText(body) ?? response.statusText;

View File

@ -37,7 +37,7 @@ describe("CreateForwardingAddressRpc", () => {
expect(result.cache).toEqual("no-store");
expect(result.method).toEqual("POST");
expect(result.headers.get("Content-Type")).toEqual("application/json");
expect(result.headers.get("X-Requested-With")).toEqual("XMLHttpRequest");
expect(result.headers.get("Accept")).toEqual("application/json");
});
it("provides the request and context to the rpc definition functions", () => {

View File

@ -29,10 +29,8 @@ export class CreateForwardingAddressRpc<
method: "POST",
headers: new Headers({
...token,
// X-Requested-With header required by some endpoints for
// detailed error descriptions (see #5565)
"X-Requested-With": "XMLHttpRequest",
"Content-Type": "application/json",
Accept: "application/json",
}),
body,
});

View File

@ -32,6 +32,7 @@ describe("GetAccountIdRpc", () => {
expect(result.cache).toEqual("no-store");
expect(result.method).toEqual("GET");
expect(result.headers.get("Content-Type")).toEqual("application/json");
expect(result.headers.get("Accept")).toEqual("application/json");
});
it("provides the request and context to the rpc definition functions", () => {

View File

@ -33,6 +33,7 @@ export class GetAccountIdRpc<
headers: new Headers({
...token,
"Content-Type": "application/json",
Accept: "application/json",
}),
});