簡體   English   中英

ajax 問題 - firebug 中的 200 OK 但沒有響應正文的紅色消息

[英]ajax problem - 200 OK in firebug but red message with no response body

正如我所見,我有一個與跨域相關的小 ajax 問題。

在本地機器上,我使用一些 ajax 創建了 html 示例:在注冊文本字段中,用戶鍵入“用戶名”,每次擊鍵時,ajax 都會將其發送到本地 Tomcat,在那里 servlet 檢查該用戶名是否已被使用並發送回“已獲取”響應。

在本地主機上根本沒有問題。 只要我輸入“用戶名”,servlet 就會發送“已接受”響應,瀏覽器會顯示它。

但是,當我在我的本地主機 Tomcat 上發送驗證請求的遠程機器(遠程網絡上的一些免費托管)上放置帶有 ajax 的測試 html 頁面時,建立了連接,在 Tomcat 控制台中我看到請求來了,在 Mozzila 的 firebug 中這是控制台輸出:

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

...但在響應選項卡中沒有 servlet 響應“已被采用”,並且螢火蟲中的消息為紅色

所以服務器通訊良好,沒有防火牆問題,響應200 OK
但是響應體是空的。

任何想法螢火蟲中的紅色消息是什么?

非常感謝您提前。

如果有人可以為 Java 推薦一些嚴肅的 ajax 教程,我們將不勝感激:)

您需要在 Ajax 請求中使用域相關 URL:

/Dinamicki1/UsernameServlet?username=zik

或者一個上下文相關的 URL(假設頁面是從/Dinamicki1 ):

UsernameServlet?username=zik

關於“Java Ajax 教程”,請從這里開始: 如何使用 Servlets 和 Ajax?

您不能使用 AJAX 讀取來自其他域的回復。

您的 HTML 必須與 AJAX servlet 位於同一服務器(以及相同的域、端口和協議)上。

Firebug 中報告的 200 狀態並不表示跨域 ajax 調用的有效性,無論是否成功。

您可能想嘗試使用代理方法來執行調用。

例如JavaScript:使用 Web 代理進行跨域 XMLHttpRequest 調用

我想出了如何從這個網站解決它:

  1. “要允許通過 Apache Tomcat 進行目錄瀏覽,請將文件 conf/web.xml 中的參數“listings”從 false 更改為 true。”

  2. 不要將您的頁面命名為C:/Documents and Settings/.../page.html而是將其命名為localhost:8080/your_servlet_name (頁面最好命名為index.html )。

這樣,您就可以向localhost:8080/your_servlet_name/something_else發出 AJAX 請求。

對我有用的解決方案是我必須在網址中添加“www”! 我正在使用 URL 重寫,所以我擁有的每個 URL(圖像、js、獲取、加載、發布),我需要使用完整的 url,但它缺少“www”!

對我來說,這是 web api(c# .NET) 請求,並且沒有啟用 cors。 為控制器上的 cors 添加了標頭並解決了問題。

[EnableCors(origins: "*", headers: "*", methods: "*")]

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM