2011-01-25 29 views
7

Tôi có phần mở rộng firefox nghe "http-on-modify-request" và kiểm tra tất cả các yêu cầu GET đến từ firefox. Tôi muốn có thể hủy yêu cầu (nói trả lại mã không thành công cho trang) hoặc sửa đổi URI của yêu cầu nhưng dường như không thể thực hiện được. đối tượng nsiHttpChannel chỉ không cho phép nó - ví dụHủy yêu cầu HTTP GET từ Tiện ích mở rộng của Firefox

delete httpChannel; 

hoặc Reseting để yêu cầu rỗng

httpChannel = Components.classes["@mozilla.org/xmlextras/xmlhttprequest;1"].createInstance(Components.interfaces.nsIXMLHttpRequest); 

không làm việc (và bạn không thể sửa đổi URI).

Vì vậy, làm cách nào để cả hai chặnsửa đổi http NHẬN yêu cầu GET trong tiện ích mở rộng firefox.

Trả lời

9

delete httpChannel; chỉ xóa biến, sắp xếp giống như nói httpChannel = undefined;. Bản thân yêu cầu không thay đổi. Tương tự, ý tưởng thứ hai của bạn chỉ đặt biến để trỏ vào một cá thể nsIHttpChannel mới, nhưng yêu cầu cũ vẫn không thay đổi.

Để sửa đổi yêu cầu, hãy sử dụng các thuộc tính và phương pháp của nó. Xem nsIHttpChannel hoặc nsIChannel hoặc nsIRequest. Như bạn nói, bạn không thể sửa đổi URI để có thể hủy bỏ nó (xem bên dưới) và thay thế nó bằng một cái mới. Tôi không chắc chắn chính xác làm thế nào để làm điều đó nhưng tôi tưởng tượng một trong ba trang đó có câu trả lời.

Để hủy, hãy sử dụng nsIRequest.cancel()

Các vấn đề liên quan