javascript - 如何从另一台服务器获取文件?

标签 javascript json xmlhttprequest tomcat7

我正在学习如何执行 XHR 并将 w3school 的代码放入我的网络服务器(tomcat7)中进行尝试。当我将“note.xml”放在与 html 相同的文件中时,我可以使用下面的代码来获取 XML 文件。

xmlhttp.open("GET","note.xml",true); 

但是,如果我将“note.xml”移动到另一个 web 应用程序位置,我将无法使用相同的方法。下面的代码也无法获取 XML 文件。

xmlhttp.open("GET","http://localhost:8080/anotherWEBapp/note.xml",true);

HTML:

<html>
<body>
<h1>W3Schools Internal Note</h1>
<div>
<b>To:</b> <span id="to"></span><br />
<b>From:</b> <span id="from"></span><br />
<b>Message:</b> <span id="message"></span>
</div>
<script>
if (window.XMLHttpRequest)
  {// code for IE7+, Firefox, Chrome, Opera, Safari
  xmlhttp=new XMLHttpRequest();
  }
else
  {// code for IE6, IE5
  xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
  }
xmlhttp.open("GET","http://localhost:8080/test-app/note.xml",true);
xmlhttp.send();
xmlDoc=xmlhttp.responseXML;

document.getElementById("to").innerHTML=
xmlDoc.getElementsByTagName("to")[0].childNodes[0].nodeValue;
document.getElementById("from").innerHTML=
xmlDoc.getElementsByTagName("from")[0].childNodes[0].nodeValue;
document.getElementById("message").innerHTML=
xmlDoc.getElementsByTagName("body")[0].childNodes[0].nodeValue;
</script>

</body>
</html>

我是否可以仅使用 javascript 来获取 XML 文件?

最佳答案

对于纯浏览器 JS 来说不行。

跨域 AJAX 违反了 same origin policy .

其他服务器需要允许您这样做。一种符合标准的方式是 CORS 。但您需要控制和修改远程服务器才能实现此目的。

或者,如果您有自己的服务器代码需要调整,您可以通过它代理事物。您在同一域上向 /proxy?url=http://example.com/somefile.xml 等内容发出 AJAX 请求。然后,您的服务器代码在后端获取该文件并呈现它。您没有违反跨源策略,因为网页与其加载的同一服务器进行通信,而您的服务器所做的事情与它无关。

或者您可以使用JSONP 。但同样,这需要远程主机的配合,远程主机会将您想要的内容包装在 JS 函数执行中,从而将内容传递到您的页面。

关于javascript - 如何从另一台服务器获取文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15489598/

相关文章:

javascript - 使用 URL 中的参数填充多个输入字段...(半工作)

javascript - Bootstrap 下拉菜单无法选择下拉菜单选项

web-services - 是否有适用于 VB6/VBA 的 JSON 解析器?

ios - 使用 Alamofire 使用来自 JSON 的 URL 加载图像

javascript - Google Analytics 事件跟踪应该触发 XHR 请求吗?

javascript - 覆盖 jQuery 中的内联点击事件

javascript - Math.sqrt() 的更快替代方案

php - 使用 PHP 进行无效的 JSON 解析

javascript - Laravel4 通过 XMLHttpRequest2 上传文件

javascript - 对预检请求的响应未通过访问控制检查 : The value of the 'Access-