2013-08-24 27 views
7

Tôi thiếu kinh nghiệm về phát triển javascript và web nói chung. Dự án tôi đang làm là một phần của chương trình đào tạo chung của công ty. Chúng tôi đã được hướng dẫn sử dụng Google Chrome làm trình duyệt thử nghiệm chính.Javascript XMLHttpRequest "NetworkError"

Về cơ bản, tôi đang viết một ứng dụng sẽ chạy trên các máy khách bên ngoài mạng intranet của công ty. Các kết nối sẽ đi qua dấu hiệu đơn của chúng tôi trên máy chủ đến các dịch vụ nội bộ. Dấu hiệu đơn trên dịch vụ chủ yếu là minh bạch đối với ứng dụng phía máy chủ - nó chặn các yêu cầu đến các dịch vụ nội bộ và lời nhắc cho thông tin đăng nhập nếu cần thiết. Từ những gì tôi có thể nói, nó thay đổi cookie phiên trong mọi yêu cầu được gửi.

Tôi đã thiết lập kết nối với các dịch vụ bằng cách sử dụng các kết nối HTTP GET và POST. Tuy nhiên, có một dịch vụ yêu cầu một yêu cầu HTTP PUT. Đây là nơi mà những rắc rối đang đến trong

Khi kịch bản được chạy, Chrome javascript console cung cấp cho các lỗi sau:.

Uncaught NetworkError: A network error occurred. 

Lỗi này là rất mơ hồ. Khi tôi xem tab Mạng trong tab nhà phát triển Chrome, tab này hiển thị yêu cầu nhưng không có bất kỳ dữ liệu phản hồi nào.

Vì sự tò mò, tôi đã nhấp chuột phải vào yêu cầu và sao chép nó dưới dạng yêu cầu cURL. Tôi đã thêm cookie phiên vào yêu cầu qua cờ -b. cURL trả lại HTTP 302, có tham chiếu đến tập lệnh cookie thực hiện trên máy chủ. Là một yêu cầu PUT, không có bất kỳ chuyển hướng nào khiến yêu cầu thất bại không? Nhưng tôi không tích cực đây là những gì đang xảy ra trong Chrome/js.

Có cách nào để tôi có thêm thông tin về lỗi không?

Tôi không tự tin 100% trong nhóm phát triển các dịch vụ nội bộ để sử dụng, vì vậy việc sử dụng yêu cầu PUT thực sự là không thể ... các dịch vụ này vẫn đang được phát triển.

Để rõ ràng, vấn đề chung là tôi cần yêu cầu PUT này để đi qua ứng dụng SSO của chúng tôi, nếu có thể.

Trả lời

10

Tôi đã gặp sự cố tương tự. Dường như chỉ xảy ra trên các phản hồi chuyển hướng. Nếu bạn đặt cờ async thành false và sử dụng chức năng gọi lại thì lỗi sẽ biến mất. Ví dụ:

xmlhttp.open("GET","http://google.com", false); 

Sau đó, bạn sẽ cần một chức năng như thế này để lắng nghe câu trả lời:

xmlhttp.onreadystatechange=function() { 
    if (xmlhttp.readyState==4 && xmlhttp.status==200) { 
    // do stuff here 
    } 
} 
Các vấn đề liên quan