title: Set RequestHeader through Selenium WebDriver
body: <p><strong>I'm encountering the below error while trying to set Request headers using browsermobproxy for selenium tests.</strong></p>
  <p>Exception in thread &quot;main&quot; org.openqa.selenium.WebDriverException: : Failed to read the 'localStorage' property from 'Window': Access is denied for this document.</p>
  <pre><code>Build info: version: '3.13.0', revision: '2f0d292', time: '2018-06-25T15:24:21.231Z'
  System info: host: 'G9HQBVT2E', ip: '10.62.6.122', os.name: 'Windows 10', os.arch: 'amd64', os.version: '10.0', java.version: '1.8.0_271'
  Driver info: org.openqa.selenium.chrome.ChromeDriver
  Capabilities {acceptInsecureCerts: false, browserName: chrome, browserVersion: 87.0.4280.141, chrome: {chromedriverVersion: 87.0.4280.20 (c99e81631faa0..., userDataDir: C:\Users\abc\AppData\...}, goog:chromeOptions: {debuggerAddress: localhost:64062}, javascriptEnabled: true, networkConnectionEnabled: false, pageLoadStrategy: normal, platform: WINDOWS, platformName: WINDOWS, proxy: Proxy(manual, http=G9HQBVT2..., setWindowRect: true, strictFileInteractability: false, timeouts: {implicit: 0, pageLoad: 300000, script: 30000}, unhandledPromptBehavior: dismiss and notify, webauthn:virtualAuthenticators: true}
  Session ID: 73d6ecf19b420b0bc368f2bc3d5f78b1
      at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
      at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
      at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
      at java.lang.reflect.Constructor.newInstance(Constructor.java:423)
      at org.openqa.selenium.remote.http.W3CHttpResponseCodec.createException(W3CHttpResponseCodec.java:187)
      at org.openqa.selenium.remote.http.W3CHttpResponseCodec.decode(W3CHttpResponseCodec.java:122)
      at org.openqa.selenium.remote.http.W3CHttpResponseCodec.decode(W3CHttpResponseCodec.java:49)
      at org.openqa.selenium.remote.HttpCommandExecutor.execute(HttpCommandExecutor.java:158)
      at org.openqa.selenium.remote.service.DriverCommandExecutor.execute(DriverCommandExecutor.java:83)
      at org.openqa.selenium.remote.RemoteWebDriver.execute(RemoteWebDriver.java:548)
      at org.openqa.selenium.remote.RemoteWebDriver.executeScript(RemoteWebDriver.java:485)
      at com.sample.test.DataReader.main(DataReader.java:79)
  </code></pre>
  <p><strong>Driver program</strong></p>
  <pre><code>public static void main(String[] args) throws Exception {
          System.setProperty(&quot;webdriver.chrome.driver&quot;, &quot;C:\\Try\\drivers\\chromedriver.exe&quot;); //PropertyReader.getProperty(&quot;chromedriverpath&quot;)
          
           // start the proxy
          BrowserMobProxy proxy = new BrowserMobProxyServer();
          proxy.setTrustAllServers(true);
          proxy.start(0);
  
          // get the Selenium proxy object
          Proxy seleniumProxy = ClientUtil.createSeleniumProxy(proxy);
          
          String chromeProfilePath = &quot;C:\\Users\\AppData\\Local\\Google\\Chrome\\User Data\\Default&quot;;
          
        //capabilities
          ChromeOptions options = new ChromeOptions();
          options.addArguments(&quot;--disable-web-security&quot;);
          options.addArguments(&quot;--ignore-certificate-errors&quot;);
          options.addArguments(&quot;--user-data-dir=&quot;+chromeProfilePath);
                                                                  
          
          // configure it as a desired capability
          DesiredCapabilities capabilities = new DesiredCapabilities();
          capabilities.setCapability(CapabilityType.PROXY, seleniumProxy);
          capabilities.setCapability(ChromeOptions.CAPABILITY, options); 
          //capabilities.setCapability(&quot;disable-web-security&quot;, true);
  
          // start the browser up
          WebDriver driver = new ChromeDriver(capabilities);
  
          // enable more detailed HAR capture, if desired (see CaptureType for the complete list)
          proxy.enableHarCaptureTypes(CaptureType.REQUEST_CONTENT, CaptureType.RESPONSE_CONTENT);
  
          //
          driver.get(&quot;chrome-extension://idgpnmonknjnojddfkpgkljpfnnfcklj/_generated_background_page.html&quot;);
          
          
          String jsScript = &quot;localStorage.setItem('profiles', JSON.stringify([{  title: 'Selenium', hideComment: true, appendMode: '', \n&quot; +
                    &quot;             headers: [                        \n&quot; +
                    &quot;               {enabled: true, name: 'token-1', value: '{\&quot;abc\&quot;: 1234, \&quot;type\&quot;: \&quot;def\&quot;}', comment: ''}\n&quot; +
                    &quot;             ],                          \n&quot; +
                    &quot;             respHeaders: [],\n&quot; +
                    &quot;             filters: []\n&quot; +
                    &quot;          }]));&quot;;
          
          
          ((JavascriptExecutor)driver).executeScript(jsScript);
  
            
      // create a new HAR with the label &quot;yahoo.com&quot;
      proxy.newHar(&quot;localhost:4200&quot;);
  
      // open app
      driver.get(&quot;http://localhost:4200/app/&quot;);
  </code></pre>
  <p>It would be great if anyone can help me on this. Thank you.</p>