我在这里有点尴尬,因为我试图通过使用客户端的浏览器而不是服务器远程获取内容。但是我有一些具体的要求,这对我来说是不可能的,我真的花了一整天的时间,但没有成功。
- 我需要获取的数据在远程服务器上。 我不拥有这个服务器(我不能做任何修改)。
- 这是一个字符串,我需要得到它并传递给PHP。
- 必须是实际获取数据的客户端(用户浏览网站)浏览器(它需要是它的IP,而不是服务器)。
而且,在跨域策略下,我似乎无法绕过它。我已经知道了,仍然尝试了一个简单的Ajax查询,失败了。然后我想"为什么不使用iframe",但同样的限制似乎也适用于他们。然后我阅读了关于使用YQL (http://developer.yahoo.com/yql/)的内容,但我注意到我试图访问的服务器阻止了YQL的用户代理,使其无法使用此技术。
所以,这就是我能想到或找到的。但我无法相信这是不可能实现的事情,这看起来并不难…
哦,我的Javascript知识非常基础,这肯定也没有帮助。
这是同源策略存在的原因之一。你试图让你的网页访问另一台服务器上的数据,而用户不知道,并且没有从其他服务器获得"许可"。
如果不建立双向信任系统(即修改"其他"服务器),我认为这是不可能的。
即使有了新的xhr和跨域支持,双向信任仍然需要通信工作。
您可以考虑胖客户机方法,或者尝试@selbie suggestion并要求手动用户交互。
The same origin policy prevents document or script loaded from one
origin from getting or setting properties of a document from a different
origin.
—From http://www.mozilla.org/projects/security/components/same-origin.html
现在,如果你想做一些黑客来得到它…访问本网站
注意:我从未尝试过上述网站上的任何方法,也不能保证它们的成功
我只能看到一个非常丑陋的解决方案:iFrames。
你可以使用flash应用程序:Flash与crossdomain.xml文件(不会有帮助,虽然,因为你不控制其他服务器)
在新的浏览器上,服务器端设置了CORS - requires Access-Control-Allow-Origin头。
你也可以尝试使用JSONP(但我认为这不会工作,因为你不拥有其他服务器)。
我认为你需要咬牙切齿,寻找其他方式来获取内容(例如在服务器端)。