2016-09-22 50 views
0

我的组织中有两台服务器。其中一个对我来说是只读的(服务器A),另一个对我们的知识库(服务器B)进行托管。在服务器A上有一个XML文件,它以未知间隔刷新。该文件包含有关各种项目状态的信息。我希望能够在服务器B上显示这些状态。跨域XML查询

作为一个初学者,我无法绕过同源策略,因为我无法访问服务器A

现在,我试图用一个简单的Python脚本xmlpull.py

import urllib2 

response = urllib2.urlopen('http://192.168.255.255/connections') 
html = response.read() 

该脚本适用于自身的伟大,但问题是,当我尝试加载使用JQuery(它xmlpull.html):

<!DOCTYPE html> 
<html> 
<head> 
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script> 
<script> 
$(document).ready(function(){ 
    $.ajax({url: "xmlpull.py", success: function(result){ 
     $("#2").html(result); 
    }}); 
}); 
</script> 
</head> 
<body> 
<div id="2">Change Me Please</div> 
</body> 
</html> 

FF只是给我的语法错误两种xmlpull.htmlxmlpull.py文件在:1:1

  1. 我在做什么错?
  2. 如果这不是解决此问题的最佳方法,那么请随时提出更好的方法。

在此先感谢!

+0

为什么你需要ajax?你需要在浏览器中呈现xml响应,特别是HTML页面吗? Python可以直接做到这一点。并注意:xml标记不能作为html标记内嵌入来显示在浏览器中。您需要将xml转换为html。 – Parfait

+0

@Parfait我想我不需要AJAX?我按照说明[这里](http://stackoverflow.com/questions/13175510/call-python-function-from-javascript-code)。我还能怎么做呢? –

+0

你想要的结果是什么?我看不到XML。你想要HTML表格的结果吗? – Parfait

回答

0

你有3种选项选择:

  • 第一:就是让服务器B来访问服务器答:如果您使用的是Apache服务器,你可以做到这一点通过添加此代码的Apache配置文件并重新启动Apache

    SetEnvIf之后起源 “HTTP(S)://(WWW)(WRITE_IP_OF_SERVER_B_HERE)$” AccessControlAllowOrigin = $ 0报头添加访问控制允许来源 %{AccessControlAllowOrigin}ÊENV = AccessControlAllowOrigin头组 Access-Control-Allow-Headers“内容类型,接受授权, X-要求,以”

这样你可以调用从服务器B服务器A从JS直接,无需在创建Python文件。使用

  • 二蟒蛇文件:
    调用从阿贾克斯Python文件,蟒蛇文件应该使用Apache或其他服务器是accessable而要做到这一点,你有两个选择。模式wsgi或mod python,都将需要apache配置和代码更改比代码大小
  • 第三种方式,如果通过创建一个php文件并将其添加到apache公用文件夹(www),您可以称它为此任务使用PHP直接没有阿帕奇 配置。
    文件内容将是:

< =的file_get_contents( “http://192.168.255.255/connections”); ?>