我想访问多站点服务器S上托管的API站点。我有S的IP地址,但是没有DNS服务器,所以我必须使用以下参数发出http请求:
{
URL : 'http://192.168.1.xxx:80/data',
headers : {
Host : 'api.somesite.com'
},
data : ...
}
但是,在发送之前,'Host'标头会自动被Angular替换为'192.168.1.xxx'(因此请求失败)。 我已经尝试过实现一个http拦截器:
api.run(['$http',function($http) {
console.log("set host");
$http.defaults.headers.common.Host = "api.somesite.com";
}]);
...没有结果:服务器以ERROR 500回答,并且开发工具显示请求的头部'Host'设置为ip地址。
或者,是否有其他方法通过使用其IP(不使用DNS)向网站发出http请求?
答案 0 :(得分:1)
Host
在XMLHttpRequest / fetch规范中定义为forbidden header name,因此无法在浏览器中通过JavaScript设置它。
排序DNS,基于每个客户端编辑系统主机文件,或者配置每个客户端以使用知道如何解析URL的HTTP代理是解决此问题的唯一方法。