【问题标题】:How to get client domain name in Cross Domain calls如何在跨域调用中获取客户端域名
【发布时间】:2012-08-31 08:18:29
【问题描述】:

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

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

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

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

我的尝试 :
我试过 request.getRemoteAddr() 和 request.getRemoveHost()
但是他们正在返回当时为 HTML 提供服务的服务器地址。 不是托管 html (abc.com) 的服务器地址

对此的任何指示,将不胜感激。

干杯,
罗希特斯

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

【问题讨论】:

    标签: java cross-domain


    【解决方案1】:

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

    【讨论】:

    • 谢谢你,@gigadot。我会试试这个,让你知道,如果它有效。
    • 这行得通。我正在获取客户端域。但是,正如您所说,这并非万无一失。但是,当 mashup 服务提供商(如 Google 地图)必须将 API 密钥与注册该密钥的相应域匹配时,他们会做什么?
    • 我相信 API 是一个 javascript sn-p 所以他们可以使用 javascript 来获取当前 web 浏览器的主 url。但如果只是下载 JSON 或 XML 的 API,除了获取referrer,他们无能为力。
    【解决方案2】:

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

    使用$.getJSON() 检索您的跨站点 JSON 响应您看到了吗http://api.jquery.com/jQuery.getJSON

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-10-17
      • 2022-11-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多