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 代理是解决此问题的唯一方法.
我想访问托管在 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 代理是解决此问题的唯一方法.