ajax问题 - 在萤火虫中200 OK,但没有响应体的红色消息

时间:2010-02-08 02:35:46

标签: java ajax firebug cross-domain

我看到了与跨域相关的小ajax问题。

在localmachine上我用一些ajax创建了html示例: 在注册文本字段中用户类型'用户名', 在每次按键上ajax将其发送给 本地Tomcat,其中servlet检查是否已使用该用户名  并发回“接受”的回复。

在localhost上没问题。 只要我输入'username',servlet就会发送'take'响应 和浏览器显示它。

但是,当我把测试html页面与ajax 在远程机器上(远程网络上的一些免费托管) 在我的localhost Tomcat上发送验证请求, 连接, 在Tomcat控制台中我看到请求来了, 在Mozzila的萤火虫中,这是控制台输出:

GET http://89.216.182.25:8080/Dinamicki1/UsernameServlet?username=zik 200 OK

...但是在回复标签中 没有servlet响应'采取' 和firebug中的消息是红色的

因此服务器通信良好,没有防火墙问题,响应为200 OK
但是反应机构是空的。

任何想法萤火虫中的这些红色信息是什么?

非常感谢你。

如果有人可以为java推荐一些严肃的ajax教程 我们将非常感激:)

6 个答案:

答案 0 :(得分:17)

您需要在Ajax请求中使用域相对URL:

/Dinamicki1/UsernameServlet?username=zik

或上下文相关的URL(假设页面是从/Dinamicki1提供的):

UsernameServlet?username=zik

关于“用于Java的Ajax教程”,实际上并不是真的。这些只是两种不同的技术。但是,我建议您开始使用jQuery(对于客户端)和Google Gson(对于服务器端)和JSON(作为客户端和服务器之间的通信语言)。

答案 1 :(得分:5)

您不能使用AJAX来阅读其他域的回复。

您的HTML必须与AJAX servlet位于同一服务器(以及相同的域,端口和协议)上。

答案 2 :(得分:2)

Firebug中报告的200状态并不表示跨域ajax呼叫的有效性,无论是否成功。

您可能想尝试使用代理方法来执行调用。

E.g。 JavaScript: Use a Web Proxy for Cross-Domain XMLHttpRequest Calls

答案 3 :(得分:1)

我想出了如何从this site解决它:

  1. “允许通过Apache Tomcat进行目录浏览,将文件conf / web.xml中的参数”listing“从false更改为true。”

  2. 将您的网页称为C:/Documents and Settings/.../page.html,而不是localhost:8080/your_servlet_name(页面更好地命名为index.html)。

  3. 这样,您就可以向localhost:8080/your_servlet_name/something_else发出AJAX请求。

答案 4 :(得分:0)

对我有用的解决方案是我必须在网址中添加“www”!我正在使用URL Rewrite,所以我拥有的每个URL(图像,js,获取,加载,发布),我需要使用完整的URL,但它缺少“www”!

答案 5 :(得分:0)

对我来说,这是web api(c#.NET)请求并且未启用cors。 在控制器上为cors添加了标题,它解决了问题。

Column1     Column2     Column3     Column4
X           Y           D           L   
X           Y           L           L   
X           Y           L           D