Spaces:
Running
Running
Update app.R
Browse files
app.R
CHANGED
|
@@ -98,6 +98,26 @@ plot_factor <- function(pi_star_list,
|
|
| 98 |
|
| 99 |
# UI Definition
|
| 100 |
ui <- fluidPage(
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 101 |
titlePanel(
|
| 102 |
"Selecting Optimal Candidate Profiles in Adversarial Environments: Case Study using a 2016 Conjoint",
|
| 103 |
windowTitle = "StrategizeLab — Optimal Candidate Profiles Explorer"
|
|
|
|
| 98 |
|
| 99 |
# UI Definition
|
| 100 |
ui <- fluidPage(
|
| 101 |
+
# Force HTTPS and add security headers
|
| 102 |
+
tags$script(HTML("
|
| 103 |
+
if (location.protocol !== 'https:' && location.hostname !== 'localhost' && location.hostname !== '127.0.0.1') {
|
| 104 |
+
location.replace('https:' + window.location.href.substring(window.location.protocol.length));
|
| 105 |
+
}
|
| 106 |
+
")),
|
| 107 |
+
|
| 108 |
+
tags$head(
|
| 109 |
+
tags$meta(httpEquiv = "Content-Security-Policy",
|
| 110 |
+
content = "upgrade-insecure-requests"),
|
| 111 |
+
tags$meta(httpEquiv = "Strict-Transport-Security",
|
| 112 |
+
content = "max-age=31536000; includeSubDomains"),
|
| 113 |
+
tags$meta(httpEquiv = "X-Content-Type-Options",
|
| 114 |
+
content = "nosniff"),
|
| 115 |
+
tags$meta(httpEquiv = "X-Frame-Options",
|
| 116 |
+
content = "DENY"),
|
| 117 |
+
tags$meta(httpEquiv = "X-XSS-Protection",
|
| 118 |
+
content = "1; mode=block")
|
| 119 |
+
),
|
| 120 |
+
|
| 121 |
titlePanel(
|
| 122 |
"Selecting Optimal Candidate Profiles in Adversarial Environments: Case Study using a 2016 Conjoint",
|
| 123 |
windowTitle = "StrategizeLab — Optimal Candidate Profiles Explorer"
|