同样的原产地政策JavaScript叫PHP
-
26-09-2019 - |
题
我知道,这是一个受欢迎的主题,但我们仍未找到答案,是完全全面的。
我试图建立一个简单的方式为我们的"客户"将一个谷歌地图在他们的网站,其图谋的位置我们的客户(或其子集)在地图上。客户在一个数据库,这是变成XML on-the-fly通过a PHP script(每个谷歌的例子)。这一工作的现在我的网站,但当我试试上另一个网站的程序是不允许的看PHP,因为它是在另一个领域。
我可以避开此写的另一个PHP文件上的其他领域简单地读取PHP文件的原域。但不是我们所有的客户将有PHP上运行他们的服务器。是否有任何办法,我可以返回XML结果从我们的数据库使用JavaScript?
几点:
JavaScript,使程序仍然坐在 我们 服务器--我们的客户链接到它从脚本标记。我想这可能是足够的,但'原籍国'(根据铬,无论如何)是仍然看作领域#2
这是巨大的:如果我使用一个绝对的基准的程序(例如请求。open('到','http://mydomain.com/api/foo.php',true))那么它将无法在即,但是,如果我使用相对基准('/api/foo.php')会的工作。
我不知道足够关于它,但我可以使用JSON?我已经看到:'脚本src="http://..../someData.js?callback=some_func"' 但不知道怎么样,我会'someData.js'看起来像JSON?(我在想很多方面的功能,这很可能是不正确的?).
我已经试过添加:header("访问控制的允许来源地:*");到顶部的PHP输出XML,但它不是真的在做我可以告诉!
如果我使用一个PHP wrapper对客户的服务器,是什么使用一卷的请求,而不是简单的file_get_contents或fopen?
对不起,很多的问题,但任何指导,将是极大的赞赏。
大规模的谢谢
垫
解决方案
一个简单的方法就是让你的PHP script返回的东西,如:
callback_function(YOUR_DATA);
然后在JS脚本上包括客户的网站,你插入一个动态 <script>
这已 src
指着你的PHP script:
(function() {
var scriptElement = document.createElement('script');
scriptElement.type = 'text/javascript';
scriptElement.async = true;
scriptElement.src = 'http://example.org/yourScript.php?data=...';
var container = document.getElementsByTagName('script')[0];
container.parentNode.insertBefore(scriptElement, container);
})();
这种技术被称为 他 和应该做的正是你想要的;)
另一种方式解决该问题将被允许跨领域的程序内容的安全政策。但我认为只有Firefox4支持,现在。
其他提示
你可以使用JSON而不是XML?如果是这样,你的选择方案3)是可能会是你最好的选择。有安全风险与这种做法,这只应用于已知的和可信赖的信息来源。
更多的阅读: http://www.codeproject.com/KB/aspnet/JSONToJSONP.aspx
JavaScript是客户端,但是该数据库是没有的。JavaScript可以不从一个数据库。