1
我有一個運行的Jetty服務器,它響應獲取請求。如果我使用瀏覽器發出請求: localhost:8080/sp或127.0.0.1:8080/sp 我得到正確的數據。如何使用XMLHttpRequest獲取響應表單servlet
public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
response.setContentType("application/json");
response.setStatus(HttpServletResponse.SC_OK);
PrintWriter out = response.getWriter();
out.println("{foobar: true"});
response.flushBuffer();
out.flush();
out.close();
}
但是當我嘗試訪問使用JS相同的URL響應正文爲空。 我已經嘗試了使用OS X網絡服務器(端口80)和python SimpleHTTPServer(端口3000)的網頁。
在這兩種情況下,響應都是空的。
<h1>Single Test Page</h1>
<script>
var httpReq = null;
var url = "http://127.0.0.1:8080/sp";
window.onload = function(){
var myRequest = new XMLHttpRequest();
myRequest.open('get', url);
myRequest.onreadystatechange = function(){
if ((myRequest.readyState == 4) || (myRequest.status == 200)){
alert(myRequest.responseText);
}
}
myRequest.send(null);
}
</script>
難道這是xss攻擊預防的問題嗎? 如何更改我的設置以使用JS與我的servlet交談? 有沒有其他方法可以讓JS從HTTP獲取請求?
我甚至添加了一個條目到我的/ etc/hosts文件中: 127.0.0.1 foo.com 並且改變了JS的URL無濟於事。