window.open with headers

And*_*ock 48 javascript window.open

我可以控制window.open(跨浏览器)发送的HTTP标头吗?

如果没有,我可以以某种方式在window.open一个页面中,然后在其弹出窗口中使用自定义标题发出我的请求吗?

我需要一些狡猾的黑客.

Que*_*tin 32

我可以控制window.open(跨浏览器)发送的HTTP头吗?

没有

如果没有,我可以以某种方式window.open一个页面,然后在其弹出窗口中发出我的请求与自定义标头?

  • 您可以请求一个触发服务器端程序的URL,该程序使用任意标头生成请求,然后返回响应
  • 您可以运行JavaScript(可能告别Progressive Enhancement),它使用XHR以任意标头发出请求(假设URL符合同源策略),然后在JS中处理结果.

我需要一些狡猾的黑客......

如果您描述问题而不是询问可能的解决方案是否有效,这可能会有所帮助.

  • 不需要自定义标头。只是基本的身份验证。你如何将它传递给 window.open() ? (3认同)
  • 即使使用XHR,对标头定制的支持也是有限的(http://www.w3.org/TR/XMLHttpRequest/#the-setrequestheader-method) (2认同)

Fra*_*ent 28

遗憾的是,在执行 window.open() 时您无法控制标题

很好又简单,我如何设法打开带有自定义标头的文件:

const viewFile = async (url) => {

  // Change this to use your HTTP client
      fetch(url, {/*YOUR CUSTOM HEADER*/} ) // FETCH BLOB FROM IT
        .then((response) => response.blob())
        .then((blob) => { // RETRIEVE THE BLOB AND CREATE LOCAL URL
          var _url = window.URL.createObjectURL(blob);
          window.open(_url, "_blank").focus(); // window.open + focus
      }).catch((err) => {
        console.log(err);
      });
};
Run Code Online (Sandbox Code Playgroud)
  • 下载文件到缓存
  • window.open到缓存


Igo*_*gor 10

如果您控制服务器端,可以在查询字符串中设置标头值并像这样发送它?这样,如果在标题中找不到它,您可以从查询字符串中解析它.

只是一个想法...你要求一个狡猾的黑客:)

  • Querystrings使用https加密./sf/ask/184045571/但是你仍然不应该在查询字符串中放入任何敏感信息... OP没有指定什么样的他们想要在查询字符串中放置的标头. (2认同)