You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by ja...@apache.org on 2023/04/05 13:23:21 UTC

[camel] branch main updated: CAMEL-19239: Add options to the vertx-websocket client to configure or disable the Origin header

This is an automated email from the ASF dual-hosted git repository.

jamesnetherton pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/camel.git


The following commit(s) were added to refs/heads/main by this push:
     new 26083fe7b7a CAMEL-19239: Add options to the vertx-websocket client to configure or disable the Origin header
26083fe7b7a is described below

commit 26083fe7b7aab778bfde12ace622a340713922e8
Author: James Netherton <ja...@gmail.com>
AuthorDate: Wed Apr 5 13:06:13 2023 +0100

    CAMEL-19239: Add options to the vertx-websocket client to configure or disable the Origin header
---
 .../camel/catalog/components/vertx-websocket.json  |  4 ++
 .../VertxWebsocketComponentConfigurer.java         | 12 +++++
 .../VertxWebsocketEndpointConfigurer.java          | 12 +++++
 .../VertxWebsocketEndpointUriFactory.java          |  4 +-
 .../component/vertx/websocket/vertx-websocket.json |  4 ++
 .../vertx/websocket/VertxWebsocketComponent.java   | 29 ++++++++++++
 .../websocket/VertxWebsocketConfiguration.java     | 27 +++++++++++
 .../vertx/websocket/VertxWebsocketConstants.java   |  1 +
 .../vertx/websocket/VertxWebsocketEndpoint.java    |  9 ++++
 .../VertxWebsocketComponentConfigurationTest.java  | 54 ++++++++++++++++++++++
 .../VertxWebsocketEndpointConfigurationTest.java   | 36 +++++++++++++++
 .../vertx/websocket/VertxWebsocketOriginTest.java  | 19 +++++++-
 .../dsl/VertxWebsocketComponentBuilderFactory.java | 37 +++++++++++++++
 .../dsl/VertxWebsocketEndpointBuilderFactory.java  | 53 +++++++++++++++++++++
 14 files changed, 299 insertions(+), 2 deletions(-)

diff --git a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/components/vertx-websocket.json b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/components/vertx-websocket.json
index b1625f2d911..af62ba0cb13 100644
--- a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/components/vertx-websocket.json
+++ b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/components/vertx-websocket.json
@@ -24,9 +24,11 @@
   "componentProperties": {
     "bridgeErrorHandler": { "kind": "property", "displayName": "Bridge Error Handler", "group": "consumer", "label": "consumer", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "description": "Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a me [...]
     "lazyStartProducer": { "kind": "property", "displayName": "Lazy Start Producer", "group": "producer", "label": "producer", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "description": "Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during star [...]
+    "allowOriginHeader": { "kind": "property", "displayName": "Allow Origin Header", "group": "advanced", "label": "advanced", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": true, "description": "Whether the WebSocket client should add the Origin header to the WebSocket handshake request." },
     "autowiredEnabled": { "kind": "property", "displayName": "Autowired Enabled", "group": "advanced", "label": "advanced", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": true, "description": "Whether autowiring is enabled. This is used for automatic autowiring options (the option must be marked as autowired) by looking up in the registry to find if there is a single instance of matching type, which t [...]
     "defaultHost": { "kind": "property", "displayName": "Default Host", "group": "advanced", "label": "advanced", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "defaultValue": "0.0.0.0", "description": "Default value for host name that the WebSocket should bind to" },
     "defaultPort": { "kind": "property", "displayName": "Default Port", "group": "advanced", "label": "advanced", "required": false, "type": "integer", "javaType": "int", "deprecated": false, "autowired": false, "secret": false, "defaultValue": 0, "description": "Default value for the port that the WebSocket should bind to" },
+    "originHeaderUrl": { "kind": "property", "displayName": "Origin Header Url", "group": "advanced", "label": "advanced", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "description": "The value of the Origin header that the WebSocket client should use on the WebSocket handshake request. When not specified, the WebSocket client will automatically determine the value for the Origin from the request URL." },
     "router": { "kind": "property", "displayName": "Router", "group": "advanced", "label": "advanced", "required": false, "type": "object", "javaType": "io.vertx.ext.web.Router", "deprecated": false, "autowired": false, "secret": false, "description": "To provide a custom vertx router to use on the WebSocket server" },
     "vertx": { "kind": "property", "displayName": "Vertx", "group": "advanced", "label": "advanced", "required": false, "type": "object", "javaType": "io.vertx.core.Vertx", "deprecated": false, "autowired": false, "secret": false, "description": "To use an existing vertx instead of creating a new instance" },
     "vertxOptions": { "kind": "property", "displayName": "Vertx Options", "group": "advanced", "label": "advanced", "required": false, "type": "object", "javaType": "io.vertx.core.VertxOptions", "deprecated": false, "autowired": false, "secret": false, "description": "To provide a custom set of vertx options for configuring vertx" },
@@ -43,9 +45,11 @@
     "port": { "kind": "path", "displayName": "Port", "group": "common", "label": "", "required": true, "type": "integer", "javaType": "int", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.vertx.websocket.VertxWebsocketConfiguration", "configurationField": "configuration", "description": "WebSocket port number to use." },
     "path": { "kind": "path", "displayName": "Path", "group": "common", "label": "", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.vertx.websocket.VertxWebsocketConfiguration", "configurationField": "configuration", "description": "WebSocket path to use." },
     "allowedOriginPattern": { "kind": "parameter", "displayName": "Allowed Origin Pattern", "group": "consumer", "label": "consumer", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.vertx.websocket.VertxWebsocketConfiguration", "configurationField": "configuration", "description": "Regex pattern to match the origin header sent by WebSocket clients" },
+    "allowOriginHeader": { "kind": "parameter", "displayName": "Allow Origin Header", "group": "consumer", "label": "producer,consumer", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": true, "configurationClass": "org.apache.camel.component.vertx.websocket.VertxWebsocketConfiguration", "configurationField": "configuration", "description": "Whether the WebSocket client should add the Origin header to th [...]
     "consumeAsClient": { "kind": "parameter", "displayName": "Consume As Client", "group": "consumer", "label": "consumer", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "configurationClass": "org.apache.camel.component.vertx.websocket.VertxWebsocketConfiguration", "configurationField": "configuration", "description": "When set to true, the consumer acts as a WebSocket client, creating exchang [...]
     "fireWebSocketConnectionEvents": { "kind": "parameter", "displayName": "Fire Web Socket Connection Events", "group": "consumer", "label": "consumer", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "configurationClass": "org.apache.camel.component.vertx.websocket.VertxWebsocketConfiguration", "configurationField": "configuration", "description": "Whether the server consumer will create a mes [...]
     "maxReconnectAttempts": { "kind": "parameter", "displayName": "Max Reconnect Attempts", "group": "consumer", "label": "consumer", "required": false, "type": "integer", "javaType": "int", "deprecated": false, "autowired": false, "secret": false, "defaultValue": 0, "configurationClass": "org.apache.camel.component.vertx.websocket.VertxWebsocketConfiguration", "configurationField": "configuration", "description": "When consumeAsClient is set to true this sets the maximum number of allow [...]
+    "originHeaderUrl": { "kind": "parameter", "displayName": "Origin Header Url", "group": "consumer", "label": "producer,consumer", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.vertx.websocket.VertxWebsocketConfiguration", "configurationField": "configuration", "description": "The value of the Origin header that the WebSocket client should use on the WebSoc [...]
     "reconnectInitialDelay": { "kind": "parameter", "displayName": "Reconnect Initial Delay", "group": "consumer", "label": "consumer", "required": false, "type": "integer", "javaType": "int", "deprecated": false, "autowired": false, "secret": false, "defaultValue": 0, "configurationClass": "org.apache.camel.component.vertx.websocket.VertxWebsocketConfiguration", "configurationField": "configuration", "description": "When consumeAsClient is set to true this sets the initial delay in mill [...]
     "reconnectInterval": { "kind": "parameter", "displayName": "Reconnect Interval", "group": "consumer", "label": "consumer", "required": false, "type": "integer", "javaType": "int", "deprecated": false, "autowired": false, "secret": false, "defaultValue": 1000, "configurationClass": "org.apache.camel.component.vertx.websocket.VertxWebsocketConfiguration", "configurationField": "configuration", "description": "When consumeAsClient is set to true this sets the interval in milliseconds at [...]
     "router": { "kind": "parameter", "displayName": "Router", "group": "consumer", "label": "consumer", "required": false, "type": "object", "javaType": "io.vertx.ext.web.Router", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.vertx.websocket.VertxWebsocketConfiguration", "configurationField": "configuration", "description": "To use an existing vertx router for the HTTP server" },
diff --git a/components/camel-vertx/camel-vertx-websocket/src/generated/java/org/apache/camel/component/vertx/websocket/VertxWebsocketComponentConfigurer.java b/components/camel-vertx/camel-vertx-websocket/src/generated/java/org/apache/camel/component/vertx/websocket/VertxWebsocketComponentConfigurer.java
index f97f11b39fc..5dae6ec56e8 100644
--- a/components/camel-vertx/camel-vertx-websocket/src/generated/java/org/apache/camel/component/vertx/websocket/VertxWebsocketComponentConfigurer.java
+++ b/components/camel-vertx/camel-vertx-websocket/src/generated/java/org/apache/camel/component/vertx/websocket/VertxWebsocketComponentConfigurer.java
@@ -21,6 +21,8 @@ public class VertxWebsocketComponentConfigurer extends PropertyConfigurerSupport
     public boolean configure(CamelContext camelContext, Object obj, String name, Object value, boolean ignoreCase) {
         VertxWebsocketComponent target = (VertxWebsocketComponent) obj;
         switch (ignoreCase ? name.toLowerCase() : name) {
+        case "alloworiginheader":
+        case "allowOriginHeader": target.setAllowOriginHeader(property(camelContext, boolean.class, value)); return true;
         case "autowiredenabled":
         case "autowiredEnabled": target.setAutowiredEnabled(property(camelContext, boolean.class, value)); return true;
         case "bridgeerrorhandler":
@@ -31,6 +33,8 @@ public class VertxWebsocketComponentConfigurer extends PropertyConfigurerSupport
         case "defaultPort": target.setDefaultPort(property(camelContext, int.class, value)); return true;
         case "lazystartproducer":
         case "lazyStartProducer": target.setLazyStartProducer(property(camelContext, boolean.class, value)); return true;
+        case "originheaderurl":
+        case "originHeaderUrl": target.setOriginHeaderUrl(property(camelContext, java.lang.String.class, value)); return true;
         case "router": target.setRouter(property(camelContext, io.vertx.ext.web.Router.class, value)); return true;
         case "useglobalsslcontextparameters":
         case "useGlobalSslContextParameters": target.setUseGlobalSslContextParameters(property(camelContext, boolean.class, value)); return true;
@@ -44,6 +48,8 @@ public class VertxWebsocketComponentConfigurer extends PropertyConfigurerSupport
     @Override
     public Class<?> getOptionType(String name, boolean ignoreCase) {
         switch (ignoreCase ? name.toLowerCase() : name) {
+        case "alloworiginheader":
+        case "allowOriginHeader": return boolean.class;
         case "autowiredenabled":
         case "autowiredEnabled": return boolean.class;
         case "bridgeerrorhandler":
@@ -54,6 +60,8 @@ public class VertxWebsocketComponentConfigurer extends PropertyConfigurerSupport
         case "defaultPort": return int.class;
         case "lazystartproducer":
         case "lazyStartProducer": return boolean.class;
+        case "originheaderurl":
+        case "originHeaderUrl": return java.lang.String.class;
         case "router": return io.vertx.ext.web.Router.class;
         case "useglobalsslcontextparameters":
         case "useGlobalSslContextParameters": return boolean.class;
@@ -68,6 +76,8 @@ public class VertxWebsocketComponentConfigurer extends PropertyConfigurerSupport
     public Object getOptionValue(Object obj, String name, boolean ignoreCase) {
         VertxWebsocketComponent target = (VertxWebsocketComponent) obj;
         switch (ignoreCase ? name.toLowerCase() : name) {
+        case "alloworiginheader":
+        case "allowOriginHeader": return target.isAllowOriginHeader();
         case "autowiredenabled":
         case "autowiredEnabled": return target.isAutowiredEnabled();
         case "bridgeerrorhandler":
@@ -78,6 +88,8 @@ public class VertxWebsocketComponentConfigurer extends PropertyConfigurerSupport
         case "defaultPort": return target.getDefaultPort();
         case "lazystartproducer":
         case "lazyStartProducer": return target.isLazyStartProducer();
+        case "originheaderurl":
+        case "originHeaderUrl": return target.getOriginHeaderUrl();
         case "router": return target.getRouter();
         case "useglobalsslcontextparameters":
         case "useGlobalSslContextParameters": return target.isUseGlobalSslContextParameters();
diff --git a/components/camel-vertx/camel-vertx-websocket/src/generated/java/org/apache/camel/component/vertx/websocket/VertxWebsocketEndpointConfigurer.java b/components/camel-vertx/camel-vertx-websocket/src/generated/java/org/apache/camel/component/vertx/websocket/VertxWebsocketEndpointConfigurer.java
index 0b0e2639731..ce3baec91d7 100644
--- a/components/camel-vertx/camel-vertx-websocket/src/generated/java/org/apache/camel/component/vertx/websocket/VertxWebsocketEndpointConfigurer.java
+++ b/components/camel-vertx/camel-vertx-websocket/src/generated/java/org/apache/camel/component/vertx/websocket/VertxWebsocketEndpointConfigurer.java
@@ -21,6 +21,8 @@ public class VertxWebsocketEndpointConfigurer extends PropertyConfigurerSupport
     public boolean configure(CamelContext camelContext, Object obj, String name, Object value, boolean ignoreCase) {
         VertxWebsocketEndpoint target = (VertxWebsocketEndpoint) obj;
         switch (ignoreCase ? name.toLowerCase() : name) {
+        case "alloworiginheader":
+        case "allowOriginHeader": target.getConfiguration().setAllowOriginHeader(property(camelContext, boolean.class, value)); return true;
         case "allowedoriginpattern":
         case "allowedOriginPattern": target.getConfiguration().setAllowedOriginPattern(property(camelContext, java.lang.String.class, value)); return true;
         case "bridgeerrorhandler":
@@ -41,6 +43,8 @@ public class VertxWebsocketEndpointConfigurer extends PropertyConfigurerSupport
         case "lazyStartProducer": target.setLazyStartProducer(property(camelContext, boolean.class, value)); return true;
         case "maxreconnectattempts":
         case "maxReconnectAttempts": target.getConfiguration().setMaxReconnectAttempts(property(camelContext, int.class, value)); return true;
+        case "originheaderurl":
+        case "originHeaderUrl": target.getConfiguration().setOriginHeaderUrl(property(camelContext, java.lang.String.class, value)); return true;
         case "reconnectinitialdelay":
         case "reconnectInitialDelay": target.getConfiguration().setReconnectInitialDelay(property(camelContext, int.class, value)); return true;
         case "reconnectinterval":
@@ -59,6 +63,8 @@ public class VertxWebsocketEndpointConfigurer extends PropertyConfigurerSupport
     @Override
     public Class<?> getOptionType(String name, boolean ignoreCase) {
         switch (ignoreCase ? name.toLowerCase() : name) {
+        case "alloworiginheader":
+        case "allowOriginHeader": return boolean.class;
         case "allowedoriginpattern":
         case "allowedOriginPattern": return java.lang.String.class;
         case "bridgeerrorhandler":
@@ -79,6 +85,8 @@ public class VertxWebsocketEndpointConfigurer extends PropertyConfigurerSupport
         case "lazyStartProducer": return boolean.class;
         case "maxreconnectattempts":
         case "maxReconnectAttempts": return int.class;
+        case "originheaderurl":
+        case "originHeaderUrl": return java.lang.String.class;
         case "reconnectinitialdelay":
         case "reconnectInitialDelay": return int.class;
         case "reconnectinterval":
@@ -98,6 +106,8 @@ public class VertxWebsocketEndpointConfigurer extends PropertyConfigurerSupport
     public Object getOptionValue(Object obj, String name, boolean ignoreCase) {
         VertxWebsocketEndpoint target = (VertxWebsocketEndpoint) obj;
         switch (ignoreCase ? name.toLowerCase() : name) {
+        case "alloworiginheader":
+        case "allowOriginHeader": return target.getConfiguration().isAllowOriginHeader();
         case "allowedoriginpattern":
         case "allowedOriginPattern": return target.getConfiguration().getAllowedOriginPattern();
         case "bridgeerrorhandler":
@@ -118,6 +128,8 @@ public class VertxWebsocketEndpointConfigurer extends PropertyConfigurerSupport
         case "lazyStartProducer": return target.isLazyStartProducer();
         case "maxreconnectattempts":
         case "maxReconnectAttempts": return target.getConfiguration().getMaxReconnectAttempts();
+        case "originheaderurl":
+        case "originHeaderUrl": return target.getConfiguration().getOriginHeaderUrl();
         case "reconnectinitialdelay":
         case "reconnectInitialDelay": return target.getConfiguration().getReconnectInitialDelay();
         case "reconnectinterval":
diff --git a/components/camel-vertx/camel-vertx-websocket/src/generated/java/org/apache/camel/component/vertx/websocket/VertxWebsocketEndpointUriFactory.java b/components/camel-vertx/camel-vertx-websocket/src/generated/java/org/apache/camel/component/vertx/websocket/VertxWebsocketEndpointUriFactory.java
index 4d183895da1..2e6ef649b2d 100644
--- a/components/camel-vertx/camel-vertx-websocket/src/generated/java/org/apache/camel/component/vertx/websocket/VertxWebsocketEndpointUriFactory.java
+++ b/components/camel-vertx/camel-vertx-websocket/src/generated/java/org/apache/camel/component/vertx/websocket/VertxWebsocketEndpointUriFactory.java
@@ -21,7 +21,8 @@ public class VertxWebsocketEndpointUriFactory extends org.apache.camel.support.c
     private static final Set<String> SECRET_PROPERTY_NAMES;
     private static final Set<String> MULTI_VALUE_PREFIXES;
     static {
-        Set<String> props = new HashSet<>(19);
+        Set<String> props = new HashSet<>(21);
+        props.add("allowOriginHeader");
         props.add("allowedOriginPattern");
         props.add("bridgeErrorHandler");
         props.add("clientOptions");
@@ -33,6 +34,7 @@ public class VertxWebsocketEndpointUriFactory extends org.apache.camel.support.c
         props.add("host");
         props.add("lazyStartProducer");
         props.add("maxReconnectAttempts");
+        props.add("originHeaderUrl");
         props.add("path");
         props.add("port");
         props.add("reconnectInitialDelay");
diff --git a/components/camel-vertx/camel-vertx-websocket/src/generated/resources/org/apache/camel/component/vertx/websocket/vertx-websocket.json b/components/camel-vertx/camel-vertx-websocket/src/generated/resources/org/apache/camel/component/vertx/websocket/vertx-websocket.json
index b1625f2d911..af62ba0cb13 100644
--- a/components/camel-vertx/camel-vertx-websocket/src/generated/resources/org/apache/camel/component/vertx/websocket/vertx-websocket.json
+++ b/components/camel-vertx/camel-vertx-websocket/src/generated/resources/org/apache/camel/component/vertx/websocket/vertx-websocket.json
@@ -24,9 +24,11 @@
   "componentProperties": {
     "bridgeErrorHandler": { "kind": "property", "displayName": "Bridge Error Handler", "group": "consumer", "label": "consumer", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "description": "Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a me [...]
     "lazyStartProducer": { "kind": "property", "displayName": "Lazy Start Producer", "group": "producer", "label": "producer", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "description": "Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during star [...]
+    "allowOriginHeader": { "kind": "property", "displayName": "Allow Origin Header", "group": "advanced", "label": "advanced", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": true, "description": "Whether the WebSocket client should add the Origin header to the WebSocket handshake request." },
     "autowiredEnabled": { "kind": "property", "displayName": "Autowired Enabled", "group": "advanced", "label": "advanced", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": true, "description": "Whether autowiring is enabled. This is used for automatic autowiring options (the option must be marked as autowired) by looking up in the registry to find if there is a single instance of matching type, which t [...]
     "defaultHost": { "kind": "property", "displayName": "Default Host", "group": "advanced", "label": "advanced", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "defaultValue": "0.0.0.0", "description": "Default value for host name that the WebSocket should bind to" },
     "defaultPort": { "kind": "property", "displayName": "Default Port", "group": "advanced", "label": "advanced", "required": false, "type": "integer", "javaType": "int", "deprecated": false, "autowired": false, "secret": false, "defaultValue": 0, "description": "Default value for the port that the WebSocket should bind to" },
+    "originHeaderUrl": { "kind": "property", "displayName": "Origin Header Url", "group": "advanced", "label": "advanced", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "description": "The value of the Origin header that the WebSocket client should use on the WebSocket handshake request. When not specified, the WebSocket client will automatically determine the value for the Origin from the request URL." },
     "router": { "kind": "property", "displayName": "Router", "group": "advanced", "label": "advanced", "required": false, "type": "object", "javaType": "io.vertx.ext.web.Router", "deprecated": false, "autowired": false, "secret": false, "description": "To provide a custom vertx router to use on the WebSocket server" },
     "vertx": { "kind": "property", "displayName": "Vertx", "group": "advanced", "label": "advanced", "required": false, "type": "object", "javaType": "io.vertx.core.Vertx", "deprecated": false, "autowired": false, "secret": false, "description": "To use an existing vertx instead of creating a new instance" },
     "vertxOptions": { "kind": "property", "displayName": "Vertx Options", "group": "advanced", "label": "advanced", "required": false, "type": "object", "javaType": "io.vertx.core.VertxOptions", "deprecated": false, "autowired": false, "secret": false, "description": "To provide a custom set of vertx options for configuring vertx" },
@@ -43,9 +45,11 @@
     "port": { "kind": "path", "displayName": "Port", "group": "common", "label": "", "required": true, "type": "integer", "javaType": "int", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.vertx.websocket.VertxWebsocketConfiguration", "configurationField": "configuration", "description": "WebSocket port number to use." },
     "path": { "kind": "path", "displayName": "Path", "group": "common", "label": "", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.vertx.websocket.VertxWebsocketConfiguration", "configurationField": "configuration", "description": "WebSocket path to use." },
     "allowedOriginPattern": { "kind": "parameter", "displayName": "Allowed Origin Pattern", "group": "consumer", "label": "consumer", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.vertx.websocket.VertxWebsocketConfiguration", "configurationField": "configuration", "description": "Regex pattern to match the origin header sent by WebSocket clients" },
+    "allowOriginHeader": { "kind": "parameter", "displayName": "Allow Origin Header", "group": "consumer", "label": "producer,consumer", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": true, "configurationClass": "org.apache.camel.component.vertx.websocket.VertxWebsocketConfiguration", "configurationField": "configuration", "description": "Whether the WebSocket client should add the Origin header to th [...]
     "consumeAsClient": { "kind": "parameter", "displayName": "Consume As Client", "group": "consumer", "label": "consumer", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "configurationClass": "org.apache.camel.component.vertx.websocket.VertxWebsocketConfiguration", "configurationField": "configuration", "description": "When set to true, the consumer acts as a WebSocket client, creating exchang [...]
     "fireWebSocketConnectionEvents": { "kind": "parameter", "displayName": "Fire Web Socket Connection Events", "group": "consumer", "label": "consumer", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "configurationClass": "org.apache.camel.component.vertx.websocket.VertxWebsocketConfiguration", "configurationField": "configuration", "description": "Whether the server consumer will create a mes [...]
     "maxReconnectAttempts": { "kind": "parameter", "displayName": "Max Reconnect Attempts", "group": "consumer", "label": "consumer", "required": false, "type": "integer", "javaType": "int", "deprecated": false, "autowired": false, "secret": false, "defaultValue": 0, "configurationClass": "org.apache.camel.component.vertx.websocket.VertxWebsocketConfiguration", "configurationField": "configuration", "description": "When consumeAsClient is set to true this sets the maximum number of allow [...]
+    "originHeaderUrl": { "kind": "parameter", "displayName": "Origin Header Url", "group": "consumer", "label": "producer,consumer", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.vertx.websocket.VertxWebsocketConfiguration", "configurationField": "configuration", "description": "The value of the Origin header that the WebSocket client should use on the WebSoc [...]
     "reconnectInitialDelay": { "kind": "parameter", "displayName": "Reconnect Initial Delay", "group": "consumer", "label": "consumer", "required": false, "type": "integer", "javaType": "int", "deprecated": false, "autowired": false, "secret": false, "defaultValue": 0, "configurationClass": "org.apache.camel.component.vertx.websocket.VertxWebsocketConfiguration", "configurationField": "configuration", "description": "When consumeAsClient is set to true this sets the initial delay in mill [...]
     "reconnectInterval": { "kind": "parameter", "displayName": "Reconnect Interval", "group": "consumer", "label": "consumer", "required": false, "type": "integer", "javaType": "int", "deprecated": false, "autowired": false, "secret": false, "defaultValue": 1000, "configurationClass": "org.apache.camel.component.vertx.websocket.VertxWebsocketConfiguration", "configurationField": "configuration", "description": "When consumeAsClient is set to true this sets the interval in milliseconds at [...]
     "router": { "kind": "parameter", "displayName": "Router", "group": "consumer", "label": "consumer", "required": false, "type": "object", "javaType": "io.vertx.ext.web.Router", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.vertx.websocket.VertxWebsocketConfiguration", "configurationField": "configuration", "description": "To use an existing vertx router for the HTTP server" },
diff --git a/components/camel-vertx/camel-vertx-websocket/src/main/java/org/apache/camel/component/vertx/websocket/VertxWebsocketComponent.java b/components/camel-vertx/camel-vertx-websocket/src/main/java/org/apache/camel/component/vertx/websocket/VertxWebsocketComponent.java
index 540cb585715..4a793f43f03 100644
--- a/components/camel-vertx/camel-vertx-websocket/src/main/java/org/apache/camel/component/vertx/websocket/VertxWebsocketComponent.java
+++ b/components/camel-vertx/camel-vertx-websocket/src/main/java/org/apache/camel/component/vertx/websocket/VertxWebsocketComponent.java
@@ -53,6 +53,10 @@ public class VertxWebsocketComponent extends DefaultComponent implements SSLCont
     private String defaultHost = VertxWebsocketConstants.DEFAULT_VERTX_SERVER_HOST;
     @Metadata(label = "advanced", defaultValue = "" + VertxWebsocketConstants.DEFAULT_VERTX_SERVER_PORT)
     private int defaultPort = VertxWebsocketConstants.DEFAULT_VERTX_SERVER_PORT;
+    @Metadata(label = "advanced", defaultValue = "true")
+    private boolean allowOriginHeader = true;
+    @Metadata(label = "advanced")
+    private String originHeaderUrl;
 
     @Override
     protected Endpoint createEndpoint(String uri, String remaining, Map<String, Object> parameters) throws Exception {
@@ -100,6 +104,8 @@ public class VertxWebsocketComponent extends DefaultComponent implements SSLCont
 
         VertxWebsocketConfiguration configuration = new VertxWebsocketConfiguration();
         configuration.setWebsocketURI(websocketURI);
+        configuration.setAllowOriginHeader(isAllowOriginHeader());
+        configuration.setOriginHeaderUrl(getOriginHeaderUrl());
 
         VertxWebsocketEndpoint endpoint = createEndpointInstance(uri, configuration);
         setProperties(endpoint, parameters);
@@ -248,6 +254,29 @@ public class VertxWebsocketComponent extends DefaultComponent implements SSLCont
         return this.vertxHostRegistry;
     }
 
+    public boolean isAllowOriginHeader() {
+        return allowOriginHeader;
+    }
+
+    /**
+     * Whether the WebSocket client should add the Origin header to the WebSocket handshake request.
+     */
+    public void setAllowOriginHeader(boolean allowOriginHeader) {
+        this.allowOriginHeader = allowOriginHeader;
+    }
+
+    public String getOriginHeaderUrl() {
+        return originHeaderUrl;
+    }
+
+    /**
+     * The value of the Origin header that the WebSocket client should use on the WebSocket handshake request. When not
+     * specified, the WebSocket client will automatically determine the value for the Origin from the request URL.
+     */
+    public void setOriginHeaderUrl(String originHeaderUrl) {
+        this.originHeaderUrl = originHeaderUrl;
+    }
+
     protected VertxWebsocketHost createVertxWebsocketHost(
             VertxWebsocketHostConfiguration hostConfiguration, VertxWebsocketHostKey hostKey) {
         return new VertxWebsocketHost(getCamelContext(), hostConfiguration, hostKey);
diff --git a/components/camel-vertx/camel-vertx-websocket/src/main/java/org/apache/camel/component/vertx/websocket/VertxWebsocketConfiguration.java b/components/camel-vertx/camel-vertx-websocket/src/main/java/org/apache/camel/component/vertx/websocket/VertxWebsocketConfiguration.java
index 6bd6025036b..c060fbfc26b 100644
--- a/components/camel-vertx/camel-vertx-websocket/src/main/java/org/apache/camel/component/vertx/websocket/VertxWebsocketConfiguration.java
+++ b/components/camel-vertx/camel-vertx-websocket/src/main/java/org/apache/camel/component/vertx/websocket/VertxWebsocketConfiguration.java
@@ -64,6 +64,10 @@ public class VertxWebsocketConfiguration {
     private SSLContextParameters sslContextParameters;
     @UriParam(label = "consumer")
     private boolean fireWebSocketConnectionEvents;
+    @UriParam(label = "producer,consumer", defaultValue = "true")
+    private boolean allowOriginHeader = true;
+    @UriParam(label = "producer,consumer")
+    private String originHeaderUrl;
 
     /**
      * The WebSocket URI address to use.
@@ -248,4 +252,27 @@ public class VertxWebsocketConfiguration {
     public boolean isFireWebSocketConnectionEvents() {
         return fireWebSocketConnectionEvents;
     }
+
+    public boolean isAllowOriginHeader() {
+        return allowOriginHeader;
+    }
+
+    /**
+     * Whether the WebSocket client should add the Origin header to the WebSocket handshake request.
+     */
+    public void setAllowOriginHeader(boolean allowOriginHeader) {
+        this.allowOriginHeader = allowOriginHeader;
+    }
+
+    public String getOriginHeaderUrl() {
+        return originHeaderUrl;
+    }
+
+    /**
+     * The value of the Origin header that the WebSocket client should use on the WebSocket handshake request. When not
+     * specified, the WebSocket client will automatically determine the value for the Origin from the request URL.
+     */
+    public void setOriginHeaderUrl(String originHeaderUrl) {
+        this.originHeaderUrl = originHeaderUrl;
+    }
 }
diff --git a/components/camel-vertx/camel-vertx-websocket/src/main/java/org/apache/camel/component/vertx/websocket/VertxWebsocketConstants.java b/components/camel-vertx/camel-vertx-websocket/src/main/java/org/apache/camel/component/vertx/websocket/VertxWebsocketConstants.java
index 9d6b6c9a16e..e6e8fbe5c6a 100644
--- a/components/camel-vertx/camel-vertx-websocket/src/main/java/org/apache/camel/component/vertx/websocket/VertxWebsocketConstants.java
+++ b/components/camel-vertx/camel-vertx-websocket/src/main/java/org/apache/camel/component/vertx/websocket/VertxWebsocketConstants.java
@@ -26,6 +26,7 @@ public final class VertxWebsocketConstants {
     public static final int DEFAULT_VERTX_SERVER_PORT = NetServerOptions.DEFAULT_PORT;
     public static final int DEFAULT_VERTX_CLIENT_WS_PORT = HttpClientOptions.DEFAULT_DEFAULT_PORT;
     public static final int DEFAULT_VERTX_CLIENT_WSS_PORT = 443;
+    public static final String ORIGIN_HTTP_HEADER_NAME = "Origin";
 
     @Metadata(description = "Sends the message to the client with the given connection key. You can\n" +
                             "use a comma separated list of keys to send a message to multiple clients",
diff --git a/components/camel-vertx/camel-vertx-websocket/src/main/java/org/apache/camel/component/vertx/websocket/VertxWebsocketEndpoint.java b/components/camel-vertx/camel-vertx-websocket/src/main/java/org/apache/camel/component/vertx/websocket/VertxWebsocketEndpoint.java
index 002776107d1..70eafdf4883 100644
--- a/components/camel-vertx/camel-vertx-websocket/src/main/java/org/apache/camel/component/vertx/websocket/VertxWebsocketEndpoint.java
+++ b/components/camel-vertx/camel-vertx-websocket/src/main/java/org/apache/camel/component/vertx/websocket/VertxWebsocketEndpoint.java
@@ -46,6 +46,7 @@ import org.slf4j.LoggerFactory;
 
 import static org.apache.camel.component.vertx.websocket.VertxWebsocketConstants.DEFAULT_VERTX_CLIENT_WSS_PORT;
 import static org.apache.camel.component.vertx.websocket.VertxWebsocketConstants.DEFAULT_VERTX_CLIENT_WS_PORT;
+import static org.apache.camel.component.vertx.websocket.VertxWebsocketConstants.ORIGIN_HTTP_HEADER_NAME;
 
 @UriEndpoint(firstVersion = "3.5.0", scheme = "vertx-websocket", title = "Vert.x WebSocket",
              syntax = "vertx-websocket:host:port/path", category = { Category.WEBSOCKET },
@@ -180,6 +181,14 @@ public class VertxWebsocketEndpoint extends DefaultEndpoint {
         if (ObjectHelper.isNotEmpty(subProtocols)) {
             connectOptions.setSubProtocols(Arrays.asList(subProtocols.split(",")));
         }
+
+        connectOptions.setAllowOriginHeader(configuration.isAllowOriginHeader());
+
+        String defaultOriginHeader = configuration.getOriginHeaderUrl();
+        if (ObjectHelper.isNotEmpty(defaultOriginHeader)) {
+            connectOptions.addHeader(ORIGIN_HTTP_HEADER_NAME, defaultOriginHeader);
+        }
+
         return connectOptions;
     }
 
diff --git a/components/camel-vertx/camel-vertx-websocket/src/test/java/org/apache/camel/component/vertx/websocket/VertxWebsocketComponentConfigurationTest.java b/components/camel-vertx/camel-vertx-websocket/src/test/java/org/apache/camel/component/vertx/websocket/VertxWebsocketComponentConfigurationTest.java
index f2b81317049..ce9a7bf649e 100644
--- a/components/camel-vertx/camel-vertx-websocket/src/test/java/org/apache/camel/component/vertx/websocket/VertxWebsocketComponentConfigurationTest.java
+++ b/components/camel-vertx/camel-vertx-websocket/src/test/java/org/apache/camel/component/vertx/websocket/VertxWebsocketComponentConfigurationTest.java
@@ -18,8 +18,11 @@ package org.apache.camel.component.vertx.websocket;
 
 import java.net.URI;
 
+import io.vertx.core.MultiMap;
 import io.vertx.core.Vertx;
 import io.vertx.core.VertxOptions;
+import io.vertx.core.http.HttpClientOptions;
+import io.vertx.core.http.WebSocketConnectOptions;
 import io.vertx.core.metrics.MetricsOptions;
 import io.vertx.core.metrics.impl.DummyVertxMetrics;
 import org.apache.camel.CamelContext;
@@ -27,6 +30,8 @@ import org.apache.camel.impl.DefaultCamelContext;
 import org.junit.jupiter.api.Test;
 
 import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertFalse;
+import static org.junit.jupiter.api.Assertions.assertNotNull;
 import static org.junit.jupiter.api.Assertions.assertSame;
 import static org.junit.jupiter.api.Assertions.assertTrue;
 
@@ -118,4 +123,53 @@ public class VertxWebsocketComponentConfigurationTest {
             assertEquals(defaultPort, websocketURI.getPort());
         }
     }
+
+    @Test
+    void testAllowOriginHeader() throws Exception {
+        try (CamelContext context = new DefaultCamelContext()) {
+            VertxWebsocketComponent component = new VertxWebsocketComponent();
+            context.addComponent("vertx-websocket", component);
+            context.start();
+
+            VertxWebsocketEndpoint endpoint
+                    = context.getEndpoint("vertx-websocket:localhost/test", VertxWebsocketEndpoint.class);
+            WebSocketConnectOptions connectOptions = endpoint.getWebSocketConnectOptions(new HttpClientOptions());
+            assertTrue(connectOptions.getAllowOriginHeader());
+        }
+    }
+
+    @Test
+    void testDisallowOriginHeader() throws Exception {
+        try (CamelContext context = new DefaultCamelContext()) {
+            VertxWebsocketComponent component = new VertxWebsocketComponent();
+            component.setAllowOriginHeader(false);
+            context.addComponent("vertx-websocket", component);
+            context.start();
+
+            VertxWebsocketEndpoint endpoint
+                    = context.getEndpoint("vertx-websocket:localhost/test", VertxWebsocketEndpoint.class);
+            WebSocketConnectOptions connectOptions = endpoint.getWebSocketConnectOptions(new HttpClientOptions());
+            assertFalse(connectOptions.getAllowOriginHeader());
+        }
+    }
+
+    @Test
+    void testCustomOriginHeaderUrl() throws Exception {
+        try (CamelContext context = new DefaultCamelContext()) {
+            String originUrl = "https://foo.bar.com";
+            VertxWebsocketComponent component = new VertxWebsocketComponent();
+            component.setOriginHeaderUrl(originUrl);
+            context.addComponent("vertx-websocket", component);
+            context.start();
+
+            VertxWebsocketEndpoint endpoint
+                    = context.getEndpoint("vertx-websocket:localhost/test", VertxWebsocketEndpoint.class);
+
+            WebSocketConnectOptions connectOptions = endpoint.getWebSocketConnectOptions(new HttpClientOptions());
+            MultiMap headers = connectOptions.getHeaders();
+            String originHeaderValue = headers.get(VertxWebsocketConstants.ORIGIN_HTTP_HEADER_NAME);
+            assertNotNull(headers);
+            assertEquals(originUrl, originHeaderValue);
+        }
+    }
 }
diff --git a/components/camel-vertx/camel-vertx-websocket/src/test/java/org/apache/camel/component/vertx/websocket/VertxWebsocketEndpointConfigurationTest.java b/components/camel-vertx/camel-vertx-websocket/src/test/java/org/apache/camel/component/vertx/websocket/VertxWebsocketEndpointConfigurationTest.java
index 1abfd6d3c71..234378e459c 100644
--- a/components/camel-vertx/camel-vertx-websocket/src/test/java/org/apache/camel/component/vertx/websocket/VertxWebsocketEndpointConfigurationTest.java
+++ b/components/camel-vertx/camel-vertx-websocket/src/test/java/org/apache/camel/component/vertx/websocket/VertxWebsocketEndpointConfigurationTest.java
@@ -16,8 +16,10 @@
  */
 package org.apache.camel.component.vertx.websocket;
 
+import io.vertx.core.MultiMap;
 import io.vertx.core.http.HttpClientOptions;
 import io.vertx.core.http.HttpServerOptions;
+import io.vertx.core.http.WebSocketConnectOptions;
 import org.apache.camel.BindToRegistry;
 import org.apache.camel.RoutesBuilder;
 import org.apache.camel.builder.RouteBuilder;
@@ -25,7 +27,12 @@ import org.apache.camel.component.mock.MockEndpoint;
 import org.apache.camel.test.AvailablePortFinder;
 import org.junit.jupiter.api.Test;
 
+import static org.apache.camel.component.vertx.websocket.VertxWebsocketConstants.ORIGIN_HTTP_HEADER_NAME;
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertFalse;
+import static org.junit.jupiter.api.Assertions.assertNotNull;
 import static org.junit.jupiter.api.Assertions.assertSame;
+import static org.junit.jupiter.api.Assertions.assertTrue;
 
 public class VertxWebsocketEndpointConfigurationTest extends VertxWebSocketTestSupport {
 
@@ -65,6 +72,35 @@ public class VertxWebsocketEndpointConfigurationTest extends VertxWebSocketTestS
         mockEndpoint.assertIsSatisfied();
     }
 
+    @Test
+    void testAllowOriginHeader() {
+        VertxWebsocketEndpoint endpoint = context.getEndpoint("vertx-websocket:localhost/test", VertxWebsocketEndpoint.class);
+        WebSocketConnectOptions connectOptions = endpoint.getWebSocketConnectOptions(new HttpClientOptions());
+        assertTrue(connectOptions.getAllowOriginHeader());
+    }
+
+    @Test
+    void testDisallowOriginHeader() {
+        VertxWebsocketEndpoint endpoint
+                = context.getEndpoint("vertx-websocket:localhost/test?allowOriginHeader=false", VertxWebsocketEndpoint.class);
+        WebSocketConnectOptions connectOptions = endpoint.getWebSocketConnectOptions(new HttpClientOptions());
+        assertFalse(connectOptions.getAllowOriginHeader());
+    }
+
+    @Test
+    void testCustomOriginHeaderUrl() {
+        String originUrl = "https://foo.bar.com";
+
+        VertxWebsocketEndpoint endpoint = context.getEndpoint("vertx-websocket:localhost/test?originHeaderUrl=" + originUrl,
+                VertxWebsocketEndpoint.class);
+
+        WebSocketConnectOptions connectOptions = endpoint.getWebSocketConnectOptions(new HttpClientOptions());
+        MultiMap headers = connectOptions.getHeaders();
+        String originHeaderValue = headers.get(ORIGIN_HTTP_HEADER_NAME);
+        assertNotNull(headers);
+        assertEquals(originUrl, originHeaderValue);
+    }
+
     @Override
     protected RoutesBuilder createRouteBuilder() {
         return new RouteBuilder() {
diff --git a/components/camel-vertx/camel-vertx-websocket/src/test/java/org/apache/camel/component/vertx/websocket/VertxWebsocketOriginTest.java b/components/camel-vertx/camel-vertx-websocket/src/test/java/org/apache/camel/component/vertx/websocket/VertxWebsocketOriginTest.java
index 7379b42febe..ef29adbb406 100644
--- a/components/camel-vertx/camel-vertx-websocket/src/test/java/org/apache/camel/component/vertx/websocket/VertxWebsocketOriginTest.java
+++ b/components/camel-vertx/camel-vertx-websocket/src/test/java/org/apache/camel/component/vertx/websocket/VertxWebsocketOriginTest.java
@@ -53,11 +53,28 @@ public class VertxWebsocketOriginTest extends VertxWebSocketTestSupport {
         assertEquals(403, upgradeRejectedException.getStatus());
     }
 
+    @Test
+    public void testCustomOrigin() throws InterruptedException {
+        String originUrl = "http://foohost:" + PORT2;
+        MockEndpoint mockEndpoint = getMockEndpoint("mock:result");
+        mockEndpoint.expectedBodiesReceived("Hello world");
+        template.sendBody("vertx-websocket:localhost:" + PORT2 + "/test?originHeaderUrl=" + originUrl, "world");
+        mockEndpoint.assertIsSatisfied();
+    }
+
+    @Test
+    public void testOriginDisabled() throws InterruptedException {
+        MockEndpoint mockEndpoint = getMockEndpoint("mock:result");
+        mockEndpoint.expectedBodiesReceived("Hello world");
+        template.sendBody("vertx-websocket:localhost:" + PORT2 + "/test?allowOriginHeader=false", "world");
+        mockEndpoint.assertIsSatisfied();
+    }
+
     private UpgradeRejectedException unwrapException(CamelExecutionException e) {
         Throwable cause = e.getCause();
         if (cause instanceof ExecutionException) {
             Throwable originalCause = cause.getCause();
-            if (originalCause != null && originalCause instanceof UpgradeRejectedException) {
+            if (originalCause instanceof UpgradeRejectedException) {
                 return (UpgradeRejectedException) originalCause;
             }
         }
diff --git a/dsl/camel-componentdsl/src/generated/java/org/apache/camel/builder/component/dsl/VertxWebsocketComponentBuilderFactory.java b/dsl/camel-componentdsl/src/generated/java/org/apache/camel/builder/component/dsl/VertxWebsocketComponentBuilderFactory.java
index 03eed8de59b..885d02ad3f4 100644
--- a/dsl/camel-componentdsl/src/generated/java/org/apache/camel/builder/component/dsl/VertxWebsocketComponentBuilderFactory.java
+++ b/dsl/camel-componentdsl/src/generated/java/org/apache/camel/builder/component/dsl/VertxWebsocketComponentBuilderFactory.java
@@ -98,6 +98,23 @@ public interface VertxWebsocketComponentBuilderFactory {
             doSetProperty("lazyStartProducer", lazyStartProducer);
             return this;
         }
+        /**
+         * Whether the WebSocket client should add the Origin header to the
+         * WebSocket handshake request.
+         * 
+         * The option is a: &lt;code&gt;boolean&lt;/code&gt; type.
+         * 
+         * Default: true
+         * Group: advanced
+         * 
+         * @param allowOriginHeader the value to set
+         * @return the dsl builder
+         */
+        default VertxWebsocketComponentBuilder allowOriginHeader(
+                boolean allowOriginHeader) {
+            doSetProperty("allowOriginHeader", allowOriginHeader);
+            return this;
+        }
         /**
          * Whether autowiring is enabled. This is used for automatic autowiring
          * options (the option must be marked as autowired) by looking up in the
@@ -150,6 +167,24 @@ public interface VertxWebsocketComponentBuilderFactory {
             doSetProperty("defaultPort", defaultPort);
             return this;
         }
+        /**
+         * The value of the Origin header that the WebSocket client should use
+         * on the WebSocket handshake request. When not specified, the WebSocket
+         * client will automatically determine the value for the Origin from the
+         * request URL.
+         * 
+         * The option is a: &lt;code&gt;java.lang.String&lt;/code&gt; type.
+         * 
+         * Group: advanced
+         * 
+         * @param originHeaderUrl the value to set
+         * @return the dsl builder
+         */
+        default VertxWebsocketComponentBuilder originHeaderUrl(
+                java.lang.String originHeaderUrl) {
+            doSetProperty("originHeaderUrl", originHeaderUrl);
+            return this;
+        }
         /**
          * To provide a custom vertx router to use on the WebSocket server.
          * 
@@ -231,9 +266,11 @@ public interface VertxWebsocketComponentBuilderFactory {
             switch (name) {
             case "bridgeErrorHandler": ((VertxWebsocketComponent) component).setBridgeErrorHandler((boolean) value); return true;
             case "lazyStartProducer": ((VertxWebsocketComponent) component).setLazyStartProducer((boolean) value); return true;
+            case "allowOriginHeader": ((VertxWebsocketComponent) component).setAllowOriginHeader((boolean) value); return true;
             case "autowiredEnabled": ((VertxWebsocketComponent) component).setAutowiredEnabled((boolean) value); return true;
             case "defaultHost": ((VertxWebsocketComponent) component).setDefaultHost((java.lang.String) value); return true;
             case "defaultPort": ((VertxWebsocketComponent) component).setDefaultPort((int) value); return true;
+            case "originHeaderUrl": ((VertxWebsocketComponent) component).setOriginHeaderUrl((java.lang.String) value); return true;
             case "router": ((VertxWebsocketComponent) component).setRouter((io.vertx.ext.web.Router) value); return true;
             case "vertx": ((VertxWebsocketComponent) component).setVertx((io.vertx.core.Vertx) value); return true;
             case "vertxOptions": ((VertxWebsocketComponent) component).setVertxOptions((io.vertx.core.VertxOptions) value); return true;
diff --git a/dsl/camel-endpointdsl/src/generated/java/org/apache/camel/builder/endpoint/dsl/VertxWebsocketEndpointBuilderFactory.java b/dsl/camel-endpointdsl/src/generated/java/org/apache/camel/builder/endpoint/dsl/VertxWebsocketEndpointBuilderFactory.java
index 59e1113aa94..fc440bffd12 100644
--- a/dsl/camel-endpointdsl/src/generated/java/org/apache/camel/builder/endpoint/dsl/VertxWebsocketEndpointBuilderFactory.java
+++ b/dsl/camel-endpointdsl/src/generated/java/org/apache/camel/builder/endpoint/dsl/VertxWebsocketEndpointBuilderFactory.java
@@ -472,6 +472,59 @@ public interface VertxWebsocketEndpointBuilderFactory {
         default AdvancedVertxWebsocketEndpointProducerBuilder advanced() {
             return (AdvancedVertxWebsocketEndpointProducerBuilder) this;
         }
+        /**
+         * Whether the WebSocket client should add the Origin header to the
+         * WebSocket handshake request.
+         * 
+         * The option is a: &lt;code&gt;boolean&lt;/code&gt; type.
+         * 
+         * Default: true
+         * Group: consumer
+         * 
+         * @param allowOriginHeader the value to set
+         * @return the dsl builder
+         */
+        default VertxWebsocketEndpointProducerBuilder allowOriginHeader(
+                boolean allowOriginHeader) {
+            doSetProperty("allowOriginHeader", allowOriginHeader);
+            return this;
+        }
+        /**
+         * Whether the WebSocket client should add the Origin header to the
+         * WebSocket handshake request.
+         * 
+         * The option will be converted to a &lt;code&gt;boolean&lt;/code&gt;
+         * type.
+         * 
+         * Default: true
+         * Group: consumer
+         * 
+         * @param allowOriginHeader the value to set
+         * @return the dsl builder
+         */
+        default VertxWebsocketEndpointProducerBuilder allowOriginHeader(
+                String allowOriginHeader) {
+            doSetProperty("allowOriginHeader", allowOriginHeader);
+            return this;
+        }
+        /**
+         * The value of the Origin header that the WebSocket client should use
+         * on the WebSocket handshake request. When not specified, the WebSocket
+         * client will automatically determine the value for the Origin from the
+         * request URL.
+         * 
+         * The option is a: &lt;code&gt;java.lang.String&lt;/code&gt; type.
+         * 
+         * Group: consumer
+         * 
+         * @param originHeaderUrl the value to set
+         * @return the dsl builder
+         */
+        default VertxWebsocketEndpointProducerBuilder originHeaderUrl(
+                String originHeaderUrl) {
+            doSetProperty("originHeaderUrl", originHeaderUrl);
+            return this;
+        }
         /**
          * Sets customized options for configuring the WebSocket client used in
          * the producer.