我可能没有正确构建查询。那么让我解释一下我面临的问题。
环境:
我有一个响应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密钥与已注册该密钥的相应域进行比较。那么,他们如何验证这样的事情?
答案 0 :(得分:1)
尝试在请求中获取referrer标头。这是你最好的选择,因为实际的呼叫是由客户端(用户或网络浏览器)进行的,因此不可能总是得到这个。但是,引用者标题并不总是由客户端Web浏览器发送。
答案 1 :(得分:0)
这是一个跨站点的ajax请求,根本不可能。
如果看到http://api.jquery.com/jQuery.getJSON,请使用$.getJSON()
检索您的跨站点JSON响应。