diff --git a/Src/StackifyLib/Web/RealUserMonitoring.cs b/Src/StackifyLib/Web/RealUserMonitoring.cs
index 8de8d5d..10e517e 100644
--- a/Src/StackifyLib/Web/RealUserMonitoring.cs
+++ b/Src/StackifyLib/Web/RealUserMonitoring.cs
@@ -1,4 +1,4 @@
-using System;
+using System;
using System.Security.Cryptography;
using Newtonsoft.Json;
using Newtonsoft.Json.Linq;
@@ -9,8 +9,12 @@ namespace StackifyLib.Web
public static class RealUserMonitoring
{
private static readonly RandomNumberGenerator Rng = new RNGCryptoServiceProvider();
-
- public static string GetHeaderScript()
+
+ ///
+ /// Generate the header script for including RUM
+ ///
+ /// nonce value, defaults to a cryptographic unique string if left null
+ public static string GetHeaderScript(string nonce = null)
{
var rumScriptUrl = Config.RumScriptUrl;
var rumKey = Config.RumKey;
@@ -52,13 +56,16 @@ public static string GetHeaderScript()
settings["Trans"] = Convert.ToBase64String(System.Text.Encoding.UTF8.GetBytes(reportingUrl));
}
- // generate nonce for strict CSP rules
+ return string.Format("",
+ settings.ToString(Formatting.None), rumScriptUrl, rumKey, nonce ?? GetNonce());
+ }
+
+ // generate nonce for strict CSP rules
+ private static string GetNonce()
+ {
var nonceBytes = new byte[20];
Rng.GetNonZeroBytes(nonceBytes);
- var nonce = Convert.ToBase64String(nonceBytes);
-
- return string.Format("",
- settings.ToString(Formatting.None), rumScriptUrl, rumKey, nonce);
+ return Convert.ToBase64String(nonceBytes);
}
}
}