diff --git a/jaxrs-api/src/main/java/jakarta/ws/rs/client/ClientRequestContext.java b/jaxrs-api/src/main/java/jakarta/ws/rs/client/ClientRequestContext.java
index f252801..357c35b 100644
--- a/jaxrs-api/src/main/java/jakarta/ws/rs/client/ClientRequestContext.java
+++ b/jaxrs-api/src/main/java/jakarta/ws/rs/client/ClientRequestContext.java
@@ -193,6 +193,23 @@
     public String getHeaderString(String name);
 
     /**
+     * Checks whether a header with a specific name and value (or item of the comma-separated value list) exists.
+     *
+     * Each single header value is converted to String using a {@link jakarta.ws.rs.ext.RuntimeDelegate.HeaderDelegate} if one
+     * is available via {@link jakarta.ws.rs.ext.RuntimeDelegate#createHeaderDelegate(java.lang.Class)} for the header value
+     * class or using its {@code toString} method if a header delegate is not available.
+     *
+     * @param name the message header.
+     * @param value the message header value.
+     * @param ignoreCase whether to ignore upper/lower case.
+     * @return {@code true} if and only if a header with the provided name exists having either the exact value or whose
+     * comma-separated header string contains value as a whole word.
+     * @see #getHeaders()
+     * @see #getHeaderString(String)
+     */
+    public boolean containsHeaderString(String name, String value, boolean ignoreCase);
+
+    /**
      * Get message date.
      *
      * @return the message date, otherwise {@code null} if not present.
diff --git a/jaxrs-api/src/main/java/jakarta/ws/rs/client/ClientResponseContext.java b/jaxrs-api/src/main/java/jakarta/ws/rs/client/ClientResponseContext.java
index 87feabd..93a04a7 100644
--- a/jaxrs-api/src/main/java/jakarta/ws/rs/client/ClientResponseContext.java
+++ b/jaxrs-api/src/main/java/jakarta/ws/rs/client/ClientResponseContext.java
@@ -89,6 +89,19 @@
     public String getHeaderString(String name);
 
     /**
+     * Checks whether a header with a specific name and value (or item of the comma-separated value list) exists.
+     *
+     * @param name the message header.
+     * @param value the message header value.
+     * @param ignoreCase whether to ignore upper/lower case.
+     * @return {@code true} if and only if a header with the provided name exists having either the exact value or whose
+     * comma-separated header string contains value as a whole word.
+     * @see #getHeaders()
+     * @see #getHeaderString(String)
+     */
+    public boolean containsHeaderString(String name, String value, boolean ignoreCase);
+
+    /**
      * Get the allowed HTTP methods from the Allow HTTP header.
      *
      * @return the allowed HTTP methods, all methods will returned as upper case strings.
diff --git a/jaxrs-api/src/main/java/jakarta/ws/rs/container/ContainerRequestContext.java b/jaxrs-api/src/main/java/jakarta/ws/rs/container/ContainerRequestContext.java
index b7e593e..42ee509 100644
--- a/jaxrs-api/src/main/java/jakarta/ws/rs/container/ContainerRequestContext.java
+++ b/jaxrs-api/src/main/java/jakarta/ws/rs/container/ContainerRequestContext.java
@@ -229,6 +229,19 @@
     public String getHeaderString(String name);
 
     /**
+     * Checks whether a header with a specific name and value (or item of the comma-separated value list) exists.
+     *
+     * @param name the message header.
+     * @param value the message header value.
+     * @param ignoreCase whether to ignore upper/lower case.
+     * @return {@code true} if and only if a header with the provided name exists having either the exact value or whose
+     * comma-separated header string contains value as a whole word.
+     * @see #getHeaders()
+     * @see #getHeaderString(String)
+     */
+    public boolean containsHeaderString(String name, String value, boolean ignoreCase);
+
+    /**
      * Get message date.
      *
      * @return the message date, otherwise {@code null} if not present.
