如何在Angular通用Httpclient Xhr调用中设置"Referer"header?

How to set "Referer" header in Angular universal Httpclient Xhr calls?

我有一个 Angular 通用 SSR 应用程序,它使用 HttpClient 从 API 服务器获取数据。 一切正常,我可以渲染数据 server-side.

问题是我想让浏览器在 CSR 中默认设置客户端 Referer,并根据每个站点发送数据(我有多个不同域的站点)。

我得到这样的引用:

import { isPlatformBrowser } from '@angular/common';
import { REQUEST } from '@nguniversal/express-engine/tokens';
...

if (!this.isBrowser) {
  const serverRequest = this.injector.get(REQUEST) as Request;
  this.referer = `${serverRequest.protocol}://${serverRequest.get('Host')}`;
  console.log('refrerr is : ',this.referer) 
}

然后我将它设置在我的 header 中:

request = req.clone({
    url: `${this.Config.url}${req.url}`,
    setHeaders: {
      referer: this.referer,
    },
    params
  });

但我在控制台中收到此错误:

Refused to set unsafe header "referer"

试试这个

npm install xhr2

然后在您的 server.ts 文件中

import * as xhr2 from 'xhr2';

//...
xhr2.prototype._restrictedHeaders = {};