如何在跨域调用中获取客户端域名

时间:2012-09-06 13:34:06

标签: java cross-domain

我可能没有正确构建查询。那么让我解释一下我面临的问题。

环境
我有一个响应http API调用的服务器。进行此调用的客户端是另一台服务器上的html文件。所以这是一个跨域调用。该功能正在按预期工作。

问题
在我的webapp(tomcat servlet)上,我希望能够获得客户端的域名,进行此调用

示例
如果http://abc.com/crossDomainCall.html正在对我的服务器进行跨域调用,我希望能够看到它是abc.com

我尝试了什么
我试过request.getRemoteAddr()和request.getRemoveHost()
但是他们正在返回服务器地址,该地址在那个时间点为HTML提供服务。 托管html(abc.com)的服务器地址

对此有任何指示,我们将非常感激。

干杯,
Rohitesh

编辑1
正如@gigadot回答的那样,使用来自HTTP Header的'referer',对我有用。但这不是万无一失的。所以,我的问题是,谷歌地图等服务如何做到这一点?我知道,他们需要将API密钥与已注册该密钥的相应域进行比较。那么,他们如何验证这样的事情?

2 个答案:

答案 0 :(得分:1)

尝试在请求中获取referrer标头。这是你最好的选择,因为实际的呼叫是由客户端(用户或网络浏览器)进行的,因此不可能总是得到这个。但是,引用者标题并不总是由客户端Web浏览器发送。

答案 1 :(得分:0)

这是一个跨站点的ajax请求,根本不可能。

如果看到http://api.jquery.com/jQuery.getJSON,请使用$.getJSON()检索您的跨站点JSON响应。