diff --git a/config/bmcweb_config.h.in b/config/bmcweb_config.h.in
index d3b174c..a8ae29e 100644
--- a/config/bmcweb_config.h.in
+++ b/config/bmcweb_config.h.in
@@ -4,9 +4,6 @@
 #include <cstddef>
 
 // clang-format off
-constexpr const int bmcwebInsecureDisableXssPrevention =
-    @BMCWEB_INSECURE_DISABLE_XSS_PREVENTION@;
-
 constexpr const bool bmcwebInsecureEnableQueryParams = @BMCWEB_INSECURE_ENABLE_QUERY_PARAMS@ == 1;
 
 constexpr const size_t bmcwebHttpReqBodyLimitMb = @BMCWEB_HTTP_REQ_BODY_LIMIT_MB@;
diff --git a/config/meson.build b/config/meson.build
index 1c6f78a..26c9bd4 100644
--- a/config/meson.build
+++ b/config/meson.build
@@ -2,8 +2,6 @@
 
 conf_data = configuration_data()
 conf_data.set('BMCWEB_HTTP_REQ_BODY_LIMIT_MB', get_option('http-body-limit'))
-xss_enabled = get_option('insecure-disable-xss')
-conf_data.set10('BMCWEB_INSECURE_DISABLE_XSS_PREVENTION', xss_enabled.allowed())
 enable_redfish_query = get_option('insecure-enable-redfish-query')
 conf_data.set10('BMCWEB_INSECURE_ENABLE_QUERY_PARAMS', enable_redfish_query.allowed())
 # enable_redfish_aggregation = get_option('redfish-aggregation')
diff --git a/include/cors_preflight.hpp b/include/cors_preflight.hpp
deleted file mode 100644
index b727222..0000000
--- a/include/cors_preflight.hpp
+++ /dev/null
@@ -1,19 +0,0 @@
-#pragma once
-
-#include "app.hpp"
-#include "http_request.hpp"
-#include "http_response.hpp"
-
-namespace cors_preflight
-{
-inline void requestRoutes(App& app)
-{
-    BMCWEB_ROUTE(app, "<str>")
-        .methods(boost::beast::http::verb::options)(
-            [](const crow::Request& /*req*/,
-               const std::shared_ptr<bmcweb::AsyncResp>&, const std::string&) {
-        // An empty body handler that simply returns the headers bmcweb
-        // uses This allows browsers to do their CORS preflight checks
-    });
-}
-} // namespace cors_preflight
diff --git a/include/security_headers.hpp b/include/security_headers.hpp
index a9c3fc4..c0855f4 100644
--- a/include/security_headers.hpp
+++ b/include/security_headers.hpp
@@ -58,51 +58,19 @@
         res.addHeader("Cross-Origin-Embedder-Policy", "require-corp");
         res.addHeader("Cross-Origin-Opener-Policy", "same-origin");
         res.addHeader("Cross-Origin-Resource-Policy", "same-origin");
-        if (bmcwebInsecureDisableXssPrevention == 0)
-        {
-            res.addHeader("Content-Security-Policy", "default-src 'none'; "
-                                                     "img-src 'self' data:; "
-                                                     "font-src 'self'; "
-                                                     "style-src 'self'; "
-                                                     "script-src 'self'; "
-                                                     "connect-src 'self' wss:; "
-                                                     "form-action 'none'; "
-                                                     "frame-ancestors 'none'; "
-                                                     "object-src 'none'; "
-                                                     "base-uri 'none' ");
-            // The KVM currently needs to load images from base64 encoded
-            // strings. img-src 'self' data: is used to allow that.
-            // https://stackoverflow.com/questions/18447970/content-security-polic
-            // y-data-not-working-for-base64-images-in-chrome-28
-        }
-        else
-        {
-            // If XSS is disabled, we need to allow loading from addresses
-            // other than self, as the BMC will be hosted elsewhere.
-            res.addHeader("Content-Security-Policy", "default-src 'none'; "
-                                                     "img-src * data:; "
-                                                     "font-src *; "
-                                                     "style-src *; "
-                                                     "script-src *; "
-                                                     "connect-src *; "
-                                                     "form-action *; "
-                                                     "frame-ancestors *; "
-                                                     "object-src *; "
-                                                     "base-uri *");
-
-            std::string_view origin = req.getHeaderValue("Origin");
-            res.addHeader(bf::access_control_allow_origin, origin);
-            res.addHeader(bf::access_control_allow_methods, "GET, "
-                                                            "POST, "
-                                                            "PUT, "
-                                                            "PATCH, "
-                                                            "DELETE");
-            res.addHeader(bf::access_control_allow_credentials, "true");
-            res.addHeader(bf::access_control_allow_headers, "Origin, "
-                                                            "Content-Type, "
-                                                            "Accept, "
-                                                            "Cookie, "
-                                                            "X-XSRF-TOKEN");
-        }
+        res.addHeader("Content-Security-Policy", "default-src 'none'; "
+                                                 "img-src 'self' data:; "
+                                                 "font-src 'self'; "
+                                                 "style-src 'self'; "
+                                                 "script-src 'self'; "
+                                                 "connect-src 'self' wss:; "
+                                                 "form-action 'none'; "
+                                                 "frame-ancestors 'none'; "
+                                                 "object-src 'none'; "
+                                                 "base-uri 'none' ");
+        // The KVM currently needs to load images from base64 encoded
+        // strings. img-src 'self' data: is used to allow that.
+        // https://stackoverflow.com/questions/18447970/content-security-polic
+        // y-data-not-working-for-base64-images-in-chrome-28
     }
 }
diff --git a/meson_options.txt b/meson_options.txt
index 39a410b..d10d1b3 100644
--- a/meson_options.txt
+++ b/meson_options.txt
@@ -316,13 +316,6 @@
 )
 
 option(
-    'insecure-disable-xss',
-    type: 'feature',
-    value: 'disabled',
-    description: 'Disable XSS preventions'
-)
-
-option(
     'insecure-tftp-update',
     type: 'feature',
     value: 'disabled',
diff --git a/src/webserver_run.cpp b/src/webserver_run.cpp
index bb03723..f02ead9 100644
--- a/src/webserver_run.cpp
+++ b/src/webserver_run.cpp
@@ -3,7 +3,6 @@
 #include "bmcweb_config.h"
 
 #include "app.hpp"
-#include "cors_preflight.hpp"
 #include "dbus_monitor.hpp"
 #include "dbus_singleton.hpp"
 #include "event_service_manager.hpp"
@@ -81,11 +80,6 @@
     crow::google_api::requestRoutes(app);
 #endif
 
-    if (bmcwebInsecureDisableXssPrevention != 0)
-    {
-        cors_preflight::requestRoutes(app);
-    }
-
     crow::login_routes::requestRoutes(app);
 
 #ifdef BMCWEB_ENABLE_VM_NBDPROXY
