【问题标题】:In Chrome, how to know if "access-control-expose-headers" header is present?在 Chrome 中,如何知道是否存在“access-control-expose-headers”标头?
【发布时间】:2019-05-18 23:15:22
【问题描述】:

我想知道一种方法来确定 access-control-expose-headers 是否存在,仅使用纯 Javascript。

用例是:我有一个 JS 中的演示应用程序,您可以在其中选择多个服务器,测试服务器返回一些调试信息,如果可用,演示程序希望显示调试信息。但是尝试读取 access-control-expose-headers 标头以查看是否可以读取 Chrome 中暴露的标头会导致控制台错误。鸡蛋问题?

【问题讨论】:

  • 它记录了什么错误?
  • 如果access-control-expose-headers 没有暴露自己(即"access-control-expose-headers" 不在值中),则无法从JavaScript 中获取其值。
  • 错误是:“拒绝获取不安全的标头access-control-expose-headers”。我对价值不感兴趣,我只想知道它是否存在。如果它不存在,以某种方式捕获错误,以便控制台不显示它。

标签: javascript google-chrome cors


【解决方案1】:

将尝试读取它们的代码包装在异常处理程序中。

const url = "https://cors-anywhere.herokuapp.com/http://example.com";
const xhr = new XMLHttpRequest();
xhr.open("GET", url);
xhr.addEventListener("load", () => {
  let header;
  try {
    header = xhr.getResponseHeader('access-control-expose-headers');
  } catch (e) {
    console.log("There was an error: ", e);
  }

  if (header) {
    console.log("Header successfully read", header);
  } else {
    console.log("Could not read header or header does not exist");
  }
});
xhr.send();

【讨论】:

  • 此代码不起作用。代码应返回:There was an error: Refused to get unsafe header access-control-expose-headers(您的代码),但它返回:Refused to get unsafe header "access-control-expose-headers(Chrome 错误)换句话说,它不会通过 catch
猜你喜欢
  • 2013-06-12
  • 1970-01-01
  • 2015-12-29
  • 2016-05-18
  • 2016-08-24
  • 2016-05-18
  • 1970-01-01
  • 2015-09-12
  • 1970-01-01
相关资源
最近更新 更多