http_header改造.md 2.5 KB

当前访问异常原因:

  • UOS上通过插件VTMModifyHeaders插件修改了HTTP请求头;Windows上通过自研浏览器cefclient修改了HTTP请求头,不涉及插件。
  • 运行命令行如下,/opt/Run/version/3.3.0.1/res/RunScript/startBrower.sh --allow-running-insecure-content --new-window --kiosk --load-extension=/opt/Run/version/3.3.0.1/res/VTMModifyHeaders --window-position=1280,1024 --disk-cache-dir=/opt/rvc/Temp/BrowserVice_Ad --disk-cache-size=2147483647 --use-fake-ui-for-media-stream --unsafely-treat-insecure-origin-as-secure=http://rvcweb-upscreen.paas.cmbchina.cn --user-data-dir=/opt/rvc/Temp/BrowserConfigVice_Ad https://rvcweb-upscreen.paas.cmbchina.cn/#/Home
  • 插件进程和需要打开的页面同时运行,不分先后。
  • 在页面index.html访问时,插件还未运行成功,所以不带http header;后续其他资源加载时,插件已经运行成功,带了http header。造成了前后不一致的情况

需要关注的问题:

  • 保证原子性:要不就都带http header,要不都不带http header
  • 即使插件运行不成功,也不要影响页面加载。
  • 对于插件而言,可使用权限很少:无法读取local storage;无法读取本地文件内容;无法读取全局变量。因此,如何传递url参数是个问题。

解决方案:

  • 通过一个本地重定向页面解决这个问题
  • 对于插件而言,在加载成功后(即通过VTM获得配置后),可以基于当前运行的url解析出真正的url,并打开页面
  • 插件日志记录

    • 由redirect.html重定向的页面,则插件不起作用,通过ws向终端记录日志"插件运行失败"
    • 插件重定向的页面,则记录日志"插件运行成功"
    • 无论如何,在记录完日志后,关闭ws,避免长时间占用

      graph TD
      A[用户访问本地重定向页面] --> B[解析URL参数]
      B --> C[显示about:blank]
      C --> D[启动定时器]
      D -->|超时(定时1000ms)| E[跳转至目标URL]
      B -->|插件加载成功| F[直接解析url]
      F --> |为http://形式| G[插件不起作用]
      F --> |为file://形式| H[插件重定向到目标URL]
      G --> I[日志记录:插件未起作用]
      H --> J[日志记录:插件运行成功]