2013-05-31 27 views
5

Tôi có tiện ích mở rộng chrome và hiện đang sử dụng api webrequest. Câu hỏi của tôi rất đơn giản, có thể chặn và sửa đổi yêu cầu AJAX với api webrequest không? Nếu không có một công việc xung quanh này?Chặn và sửa đổi yêu cầu AJAX bằng cách sử dụng webRequest

PS. Tôi đang cố gắng đưa các mẩu HTML vào một email Gmail nhưng giải pháp duy nhất mà tôi đã tìm thấy cho đến nay liên quan đến việc phát hiện tất cả các loại soạn thảo khác nhau và sau đó tiêm HTML của tôi. Phương pháp này là tốt ngoại trừ nó không ổn định, chỉ có khoảng 70% thời gian công việc chèn.

Nếu có cách nào tốt hơn, hãy cho tôi biết, cảm ơn!

EDIT

Tìm thấy một số giải pháp thay thế nếu có ai cần nó.

  • Ghi đè phương thức mặc định XMLHttpRequest.send để phát sự kiện. Bạn có thể sửa đổi yêu cầu trước khi nó được gửi đi.
  • Override dạng mặc định nộp phương pháp và chặn tất cả các hình thức nộp trước khi chúng được gửi (sửa đổi dữ liệu hình thức)
+0

Cũng ehre: https://stackoverflow.com/q/23561805/632951 – Pacerier

Trả lời

2

Hiện tại không có cách nào để truy cập hoặc sửa đổi nội dung phản hồi bằng cách sử dụng api webRequest. Có một số open issue trong chromium yêu cầu tính năng đó. Gần đây, họ đã triển khai khả năng của accessing the request body, do đó, có thể họ cũng sẽ thêm điều này.

Bạn có thể có may mắn hơn với các kỹ thuật sửa đổi đối tượng XMLHttpRequest, như được mô tả trong this answer. Here bạn có nghiên cứu điển hình từng bước trong đó phản ứng AJAX bị chặn và sửa đổi.

+0

Tôi đã có một cảm giác nó không thể, thực sự hy vọng họ thực hiện nó sớm nhưng cảm ơn cho các liên kết tuyệt vời, nên là một đọc thú vị! – 1337holiday

+0

@rsanchez, Nhưng người hỏi câu hỏi chỉ muốn chặn phải không? đó là doable không? – Pacerier

2

Mặc dù bạn có thể phát hiện XMLHttpRequests bằng cách thiết lập một cách rõ ràng type property for chrome.webRequest để xmlhttprequest, bạn sẽ chỉ có thể để ngăn chặn yêu cầu không đồng bộ.

XML đồng bộHttpRequests được tạo từ tiện ích mở rộng của bạn bị ẩn khỏi việc chặn trình xử lý sự kiện để ngăn chặn deadlocks. Ngoài ra, API webRequest sẽ chỉ hiển thị các cuộc gọi được thực hiện cho các mẫu URi được xác định trong khu vực permissions của tệp kê khai của bạn.

+0

Phải, tôi đã chặn yêu cầu từ mail.google.com, cụ thể là XMLHttpRequests như bạn đã nêu. Tuy nhiên, có thể sửa đổi responseBody của các yêu cầu này với yêu cầu web không? Tôi đã thử và nó không có vẻ là một cái gì đó được hỗ trợ. – 1337holiday

+0

Đó là sự hiểu biết của tôi rằng bạn chỉ có thể sửa đổi đối tượng ResponseHeaders bằng cách sử dụng phương pháp chặn. Có một yêu cầu tính năng đang chờ xử lý cho chính xác loại điều khiển bạn muốn https://code.google.com/p/chromium/issues/detail?id=104058 – QFDev

+0

Phần quan trọng là "XMLHttpRequests đồng bộ ** được tạo từ tiện ích của bạn * * ", vì vậy bạn có thể xử lý XHR đồng bộ từ các nguồn gốc khác. Và câu hỏi làm cho nó rõ ràng rằng đó là yêu cầu riêng của trang. – Xan

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