【问题标题】:Angular, Refused to set unsafe header "origin" when changed the headerAngular,更改标题时拒绝设置不安全的标题“来源”
【发布时间】:2023-04-08 04:44:01
【问题描述】:

我确实尝试过更改标题,如关注

const httpOptions = {
  headers: new HttpHeaders({
    origin: 'https://custom.url.com',
    responseType: 'text',
  }),
}

console.log('here')
return new Promise((resolve, reject) => {
  this._httpClient
    .get(
      'https://any.url.com',
      httpOptions,
    )
    .subscribe((res) => {
      console.log(res)
   })
})

但是我从浏览器中得到了Refused to set unsafe header "origin"

有人修复了这个错误吗?

我想这样做的原因是因为我在电子中运行角度,这不会发送任何来源...

【问题讨论】:

  • 我不知道这可能会有所帮助。 stackoverflow.com/questions/11182712/…
  • @WahabShah 有点像,但我也想知道,因为它确实适用于电子,但正如 Charles Desbiens 所做的那样。
  • 是的。查尔斯在这个链接中提到的也是同样的事情。就像它的正常行为一样。浏览器禁止这样的事情

标签: angular


【解决方案1】:

这是正常行为。浏览器禁止手动设置源头。这是一个Forbidden Header Name 如果您的http 客户端没有添加源头,这是因为在某些情况下,源头不会被添加。我无法告诉您您的应用满足哪些条件,但您可以在 MDN 上了解更多信息。

【讨论】:

  • 我也是电子用户,在那里我可以更改原点,一切都按预期进行,你能解释一下原因吗?为什么 angular 那么不表明我们不应该设置原点?
  • 您可以更改 Electron 中的 origin 标头,因为您可以修改发送请求的用户代理。另一方面,Angular 不允许修改用户代理。当 Angular 发送请求时,它是从您的浏览器发送的。出于显而易见的原因,不允许网站重新编程浏览器的用户代理。
  • 非常感谢,现在更清楚了。仍然不明白为什么 Angular 不为此提供任何类型验证。
  • @Raphaël Balet Angular 不会在运行时验证禁止的标头,因为它不需要。浏览器已经处理好了。
  • 至于在开发过程中给你警告,那必须由 TypeScript 编译器来完成。 TypeScript 编译器不是验证值的系统。它是一个用于验证值将具有的类型的系统。没有“NOT”类型的概念允许排除具有预期类型的​​可能值的子集(在本例中为“字符串”)。
猜你喜欢
  • 2011-12-03
  • 1970-01-01
  • 2018-10-26
  • 1970-01-01
  • 2016-01-13
  • 2014-07-07
  • 1970-01-01
  • 1970-01-01
  • 2013-07-24
相关资源
最近更新 更多