Angular $http 请求中 'Host' header 的强制值

Force value of 'Host' header in Angular $http request

我想访问托管在 multi-site 服务器 S 上的 API 站点。我有 S 的 IP 地址,但没有 DNS 服务器,所以我必须创建一个 http使用以下参数请求:

{
  URL : 'http://192.168.1.xxx:80/data',
  headers : {
    Host : 'api.somesite.com'
  },
  data : ...
}

然而,'Host' header 在发送前自动被 Angular 替换为 '192.168.1.xxx'(因此请求失败)。 我已经尝试实现一个 http 拦截器:

api.run(['$http',function($http) {
    console.log("set host");
    $http.defaults.headers.common.Host = "api.somesite.com";
}]);

...没有结果:服务器响应错误 500,开发工具显示请求已将 header 'Host' 设置为 IP 地址。

或者,是否有其他方法可以使用其 ip(无 DNS)向网站发出 http 请求?

Host 在 XMLHttpRequest / fetch 规范中定义了 forbidden header name,因此无法在浏览器中从 JavaScript 设置它。

整理 DNS、在每个客户端的基础上编辑系统主机文件,或者将每个客户端配置为使用知道如何解析 URL 的 HTTP 代理是解决此问题的唯一方法.