使用客户端的IP获取内容

时间:2011-12-07 23:54:02

标签: javascript ajax xmlhttprequest cross-domain

我在这里有点尴尬,因为我试图通过使用客户端的浏览器而不是服务器远程获取内容。但是我的规格让我看起来不可能,我花了一整天都没有成功。

  1. 我需要获取的数据位于远程服务器上。
  2. 我不拥有此服务器(我无法对其进行任何修改)。
  3. 这是一个字符串,我需要得到它并将其传递给PHP。
  4. 必须是客户(浏览网站的用户)实际获取数据的浏览器(它需要是IP,而不是服务器)。
  5. 而且,通过跨域策略,我似乎无法绕过它。我已经知道了,仍然尝试了一个简单的Ajax查询,但失败了。然后我虽然'为什么不使用iFrame',但同样的限制似乎也适用于他们。然后我读到了关于使用YQL(http://developer.yahoo.com/yql/)但我注意到我试图阻止YQL的用户代理的服务器使得无法使用这种技术。

    所以,这就是我能想到或发现的全部内容。但是我无法相信它不可能实现这样的事情,甚至看起来都很难......

    哦,我的Javascript知识非常基础,这也无济于事。

4 个答案:

答案 0 :(得分:1)

这是存在同源政策的一个原因。您尝试让您的网页在不同的服务器上访问数据,而无需用户知道,并且没有"权限"从其他服务器这样做。

如果没有建立双向信任系统(即修改其他服务器),我相信这是不可能的。

即使有新的xhr和跨域支持,仍然需要双向信任才能使通信正常工作。

您可以考虑使用胖客户端方法,或尝试@selbie建议并要求手动用户交互。

答案 1 :(得分:0)

The same origin policy prevents document or script loaded from one 
origin from getting or setting properties of a document from a different
origin. 

- 来自http://www.mozilla.org/projects/security/components/same-origin.html

现在,如果你想做一些hackery得到它...... visit this site

注意:我从未尝试过上述网站上的任何方法,也无法保证其成功

答案 2 :(得分:-1)

我只能看到一个非常难看的解决方案:iFrames。 This article包含一些很好的信息。

答案 3 :(得分:-1)

您可以使用Flash应用程序执行此操作: flash with a crossdomain.xml file(因为你不控制其他服务器,所以没有帮助)

在新浏览器上有CORS - 需要在服务器端设置Access-Control-Allow-Origin标头。

您也可以尝试使用JSONP(但我认为这不起作用,因为您没有其他服务器)。

我认为你需要咬紧牙关并找到其他方式来获取内容(例如在服务器端)。