【发布时间】:2011-05-01 10:36:07
【问题描述】:
我知道这是一个热门话题,但我还没有找到完全全面的答案。
我正在尝试为我们的“客户”创建一种在他们的网站上放置 Google 地图的简单方法,该方法会在地图上标出我们客户(或其子集)的位置。客户位于 MySQL 数据库中,该数据库由 PHP 脚本动态转换为 XML(根据 Google 的示例)。这在我的网站上运行良好,但是当我在另一个网站上尝试时,不允许 xmlHTTPRequest 查看 PHP,因为它在另一个域上。
我可以通过在另一个域上编写另一个 PHP 文件来规避这个问题,该文件只是读取原始域上的 PHP 文件。但并非我们所有的客户都会在他们的服务器上运行 PHP。有什么方法可以使用 JavaScript 从我们的数据库返回 XML 结果?
几点:
生成 xmlHTTPRequest 的 JavaScript 仍然位于 我们的 服务器上——我们的客户端通过脚本标签链接到它。我认为这可能就足够了,但“起源”(无论如何,根据 Chrome)仍然被视为域#2
这很好:如果我在 xmlHTTPRequest 中使用绝对引用(例如 request.open('GET', 'http://mydomain.com/api/foo.php', true)),那么它在 IE 中会失败,但如果我使用相对引用 ('/api/foo.php') 它将起作用。
我对此知之甚少,但我可以使用 JSON 吗?我见过: 'script src="http://..../someData.js?callback=some_func"' 但不知道怎么做,我会让“someData.js”看起来像 JSON? (我在函数方面想的很多,这可能是不正确的?)。
我尝试添加: header("访问控制允许来源:*"); 到输出 XML 的 PHP 的顶部,但我可以说它并没有做太多事情!
如果我在客户端服务器上使用 PHP 包装器,使用 cURL 请求而不是简单的 file_get_contents 或 fopen 有什么好处?
抱歉,有很多问题,但我们将不胜感激。
非常感谢,
垫子
【问题讨论】:
-
#3 被称为 JSONP,这听起来像你需要的。
标签: php javascript xmlhttprequest jsonp same-origin-policy