containsHeaderString makes sense in all four filter context types
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.