From 31f022500549f1d862af531da704a9b3c6568ff5 Mon Sep 17 00:00:00 2001 From: Nickle Wang Date: Wed, 7 Aug 2024 15:48:37 +0800 Subject: RedfishPkg/RedfishHttpDxe: check response content type. Check HTTP response content type to see if it is application/json type or not. In Redfish, we expect to see response data in JSON format. If it is not, show warning message to developer. Signed-off-by: Nickle Wang --- RedfishPkg/RedfishHttpDxe/RedfishHttpOperation.c | 12 ++++++++++++ 1 file changed, 12 insertions(+) (limited to 'RedfishPkg') diff --git a/RedfishPkg/RedfishHttpDxe/RedfishHttpOperation.c b/RedfishPkg/RedfishHttpDxe/RedfishHttpOperation.c index 8110985add..8ae1d2d7a3 100644 --- a/RedfishPkg/RedfishHttpDxe/RedfishHttpOperation.c +++ b/RedfishPkg/RedfishHttpDxe/RedfishHttpOperation.c @@ -493,6 +493,7 @@ ParseResponseMessage ( EFI_STATUS Status; EDKII_JSON_VALUE JsonData; EFI_HTTP_HEADER *ContentEncodedHeader; + EFI_HTTP_HEADER *ContentTypeHeader; VOID *DecodedBody; UINTN DecodedLength; @@ -545,6 +546,17 @@ ParseResponseMessage ( // if ((ResponseMsg->BodyLength != 0) && (ResponseMsg->Body != NULL)) { DEBUG ((REDFISH_HTTP_CACHE_DEBUG_REQUEST, "%a: body length: %d\n", __func__, ResponseMsg->BodyLength)); + + // + // We expect to see JSON body + // + ContentTypeHeader = HttpFindHeader (RedfishResponse->HeaderCount, RedfishResponse->Headers, HTTP_HEADER_CONTENT_TYPE); + if (ContentTypeHeader != NULL) { + if (AsciiStrCmp (ContentTypeHeader->FieldValue, HTTP_CONTENT_TYPE_APP_JSON) != 0) { + DEBUG ((DEBUG_WARN, "%a: body is not in %a format\n", __func__, HTTP_CONTENT_TYPE_APP_JSON)); + } + } + // // Check if data is encoded. // -- cgit