2012-07-21 35 views
14

Tôi biết rằng chrome.webRequest.onBeforeRequest cho phép yêu cầu bị chặn, phân tích và chặn, nhưng nó chỉ cho phép truy cập vào tiêu đề yêu cầu chứ không cho phép yêu cầu (theo như tôi biết).Nội dung yêu cầu HTTP chặn từ tiện ích mở rộng chrome

Trường hợp sử dụng mẫu: nghĩ rằng chặn giá trị biểu mẫu.

Dường như có đề xuất thay đổi API here đề xuất chính xác điều này.

Có cách nào khác có thể thực hiện được không?

Cảm ơn.

+2

Chặn thân phản hồi/yêu cầu hiện nay là không thể thực hiện bằng cách sử dụng built-in API Chrome. [Phần liên quan của mã nguồn mới nhất] (http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/extensions/api/web_request/) không chứa bất kỳ dấu hiệu nào của tính năng như vậy. Nếu bạn không thể sống mà không có tính năng này, bạn có thể khám phá [khả năng] (http://stackoverflow.com/tags/npapi/info) của [plugin NPAPI] (http://code.google.com/chrome /extensions/npapi.html) hoặc khởi chạy máy chủ (cục bộ) và chuyển hướng các yêu cầu cụ thể đến máy chủ cục bộ của bạn. –

+0

Thats không may. NPAPI có vẻ như quá mức cần thiết cho nhu cầu của tôi. Cảm ơn vì câu trả lời. – Ped

Trả lời

9

Chức năng này đã được thêm vào API ngay bây giờ, xem documentation.

Để truy cập vào cơ thể bạn cần phải làm như sau:

chrome.webRequest.onBeforeRequest.addListener(
    function(details) 
    { 
     console.log(details.requestBody); 
    }, 
    {urls: ["https://myurlhere.com/*"]}, 
    ['requestBody'] 
); 
+0

Gee, thật tuyệt vời. Cảm ơn bạn đã ping. – Ped

+1

Đối với tôi, nó luôn trở về không xác định. Có thể chỉ dành cho kênh beta? – BeauCielBleu

+0

@BeauCielBleu có thể không có nội dung yêu cầu. Hãy thử đăng nhập URL thay vào đó: 'console.log (" url: "+ details.url);' – georgiecasey

2

Mặc dù bạn không thể chặn, bạn có thể sử dụng phương pháp AJAX chuẩn để tạo băng dính. Thay vì yêu cầu href, hãy xem liệu bạn có thể thực hiện cuộc gọi không đồng bộ và lưu nó vào một đối tượng HTML không được trình bày hay không. Sau đó cạo/đọc/phân tích cú pháp/bất kỳ tiêu chí cơ thể của bạn là gì, và nếu nó vượt qua, hãy đẩy đối tượng cơ thể đó trở lại cửa sổ/trang hiện tại.

Lưu trữ nội dung trong phần tử bị chặn và sau đó sử dụng cùng yếu tố đó cho nội dung sẽ cho phép bạn tránh thực hiện các cuộc gọi trùng lặp. Nhược điểm là bạn sẽ nhận được nội dung đầy đủ cho những thứ bạn sẽ không kết thúc bằng cách sử dụng. Điều đó có thể hoặc không thể là vấn đề hiệu suất băng thông/tốc độ.

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