Chỉnh sửa và phát lại XHR chrome / firefox vv?


143

Tôi đã tìm cách thay đổi yêu cầu XHR được thực hiện trong trình duyệt của mình và sau đó phát lại yêu cầu đó. Giả sử tôi có một yêu cầu POST hoàn chỉnh được thực hiện trong trình duyệt của mình và điều duy nhất tôi muốn thay đổi là một giá trị nhỏ và sau đó phát lại. Điều này sẽ dễ dàng hơn nhiều và nhanh hơn để làm trực tiếp trong trình duyệt.

Tôi đã tìm hiểu một chút về Google và chưa tìm được cách nào để làm điều này trong Chrome hoặc Firefox. Có cách nào để làm điều đó trong một trong những trình duyệt đó, hoặc có thể một trình duyệt khác không?


Nếu bạn đến đây sau khi nhận ra rằng "Phát lại XHR" không hoạt động trong Chrome, hãy lưu ý rằng trong các trường hợp có OPTIONSyêu cầu preflight ( ), bạn cần nhấp vào 'phát lại' trên yêu cầu preflight - không phải là yêu cầu cuối cùng thực tế.
Janaka Bandara

Câu trả lời:


180

Trình duyệt Chrome :

  • Trong bảng điều khiển Mạng của devtools, nhấp chuột phải và chọn Sao chép dưới dạng cURL
  • Dán / Chỉnh sửa yêu cầu, sau đó gửi nó từ một thiết bị đầu cuối, giả sử bạn có curllệnh

Xem chụp:

nhập mô tả hình ảnh ở đây

Ngoài ra, và trong trường hợp bạn cần gửi yêu cầu trong ngữ cảnh của trang web , chọn "Sao chép khi tìm nạp" và chỉnh sửa - gửi nội dung từ bảng điều khiển javascript.


Firefox:

Firefox cho phép chỉnh sửa và gửi lại XHR ngay từ bảng điều khiển Mạng. Chụp dưới đây là từ Firefox 36:

nhập mô tả hình ảnh ở đây


Đây thực sự có thể là những gì tôi đang tìm kiếm. Tôi biết rằng tôi có thể sao chép cuộc gọi cURL, nhưng tôi không thể thực hiện cuộc gọi đó trực tiếp từ thiết bị đầu cuối của mình vì tôi sẽ được xác thực. Nhưng với thiết bị đầu cuối được tích hợp trực tiếp vào Chorme, tôi cho rằng cuộc gọi được thực hiện từ "bên trong" trình duyệt. Nếu vậy, thì điều này nên đóng dấu thỏa thuận.
madsobel 27/2/2015

14
Tôi đã thêm thông tin về Firefox trong câu trả lời
Michael P. Bazos

Mẹo nhỏ: nếu bạn muốn xem đầu ra cURL trong trình duyệt, hãy chạy nó trong CLI như thế này curl ... > preview.htmlsau đó mở tệp trong trình duyệt.
afilina

@afilina để tự động hóa hơn nữa quá trình này, bạn có thể thêm && open preview.htmlvào macOS và tệp sẽ mở trực tiếp sau khi yêu cầu
CodeBrauer

2
Trong trường hợp này, Firefox đang làm một công việc tốt hơn nhiều!
jpenna

41

Chrome hiện có Sao chép dưới dạng tìm nạp trong phiên bản 67:

Sao chép dưới dạng tìm nạp

Bấm chuột phải vào một yêu cầu mạng, sau đó chọn Sao chép> Sao chép dưới dạng Tìm nạp để sao chép fetch()mã tương đương cho yêu cầu đó vào khay nhớ tạm của bạn.

https://developers.google.com/web/updates/2018/04/devtools#fetch

Đầu ra mẫu:

fetch("https://stackoverflow.com/posts/validate-body", {
  credentials: "include",
  headers: {},
  referrer: "https://stackoverflow.com/",
  referrerPolicy: "origin",
  body:
    "body=Chrome+now+has+_Copy+as+fetch_+in+version+67%3A%0A%0A%3E+Copy+as+fetch%0ARight-click+a+network+request+then+select+**Copy+%3E+Copy+As+Fetch**+to+copy+the+%60fetch()%60-equivalent+code+for+that+request+to+your+clipboard.%0A%0A&oldBody=&isQuestion=false",
  method: "POST",
  mode: "cors"
});

Sự khác biệt là Sao chép dưới dạng cURL cũng sẽ bao gồm tất cả các tiêu đề yêu cầu (như Cookie và Chấp nhận) và phù hợp để phát lại yêu cầu bên ngoài Chrome. Các fetch()code đang thích hợp cho phát lại bên trong cùng một trình duyệt.


6
Cảm ơn vì điều này. Đối với bất kỳ ai khác thắc mắc - bạn chỉ có thể dán fetchlệnh trực tiếp vào bảng điều khiển Chrome và phát lại yêu cầu.
Eric Kigathi

7
Bạn có thể sử dụng các thao tác sau sau khi tìm nạp để giải quyết lời hứa được trả về bằng cách tìm nạp và xem nội dung phản hồi (giả sử đó là JSON).then(r => r.json()).then(json => console.log(json))
tuân thủ POSIX

1
@Josh Lee, tôi nghĩ rằng các mẹo tuân thủ POSIX là tốt và có thể được thêm vào câu trả lời này.
Nabi KAZ

@ Lời khuyên tốt tuân thủ POSIX, Có một lệnh nhỏ hơn có thể được giữ trong tâm trí của tôi không?!
Nabi KAZ

Đối với những người thắc mắc nơi dán mã tìm nạp: dán và sửa đổi nó trên bảng điều khiển
dotista2008

20

Hai gợi ý của tôi:

  1. Plugin Postman của Chrome + Plugin Postman Interceptor . Thông tin thêm: Postman Chụp yêu cầu Tài liệu

  2. Nếu bạn đang dùng Windows thì Fiddler của Telerik là một lựa chọn. Nó có tùy chọn nhà soạn nhạc để phát lại các yêu cầu http và hoàn toàn miễn phí.


8
Kể từ khi tôi bắt đầu sử dụng Postman + phần mở rộng chrome Interceptor, tôi không có nhu cầu về Fiddler.
threadster

3
Ứng dụng FYI Postman cho Chrome hiện không còn dùng nữa và việc thiết lập ứng dụng này trong phiên bản độc lập sẽ khó khăn hơn một chút
yefrem

cảm ơn rất nhiều những gì tôi đang tìm kiếm!
Mohammad


4

Đối với Firefox, vấn đề tự giải quyết. Nó có tính năng "Chỉnh sửa và gửi lại" được triển khai.

Đối với tiện ích mở rộng Chrome Tamper dường như thực hiện thủ thuật.


Mà không được cập nhật nữa và có đánh giá khá xấu. Thay thế tốt nhất là sử dụng Firefox cho loại công việc này.
T3rm1

Vâng. Tình hình gửi lại dường như thay đổi khá nhanh. Bây giờ Chrome đã gửi lại các yêu cầu XHR, nhưng nó không cho phép chỉnh sửa.
Jari Turkia

hãy cẩn thận với Firefox ver.76 dường như có vấn đề với mã thông báo CSRF trong cookie khi Chỉnh sửa và Gửi lại. Đã thử với ver 37, nó hoạt động tốt, nhưng với ver76 có vấn đề xác thực mã thông báo CSRF.
rối

0

Có một số cách để làm điều này, như đã đề cập ở trên, nhưng theo kinh nghiệm của tôi, cách tốt nhất để xử lý yêu cầu XHR và gửi lại là sử dụng các công cụ chrome dev để sao chép yêu cầu dưới dạng yêu cầu cURL (nhấp chuột phải vào yêu cầu trong tab mạng ) và chỉ cần nhập vào ứng dụng Postman (nút nhập khổng lồ ở trên cùng bên trái).


0

5 năm đã trôi qua và yêu cầu thiết yếu này đã không bị các nhà phát triển Chrome bỏ qua.
Mặc dù họ không cung cấp phương pháp nào để chỉnh sửa dữ liệu như trong Firefox, nhưng họ cung cấp phát lại XHR đầy đủ.
Điều này cho phép gỡ lỗi các cuộc gọi ajax. "Phát lại XHR" sẽ lặp lại toàn bộ truyền.
nhập mô tả hình ảnh ở đây


0

Không cần cài đặt tiện ích mở rộng của bên thứ 3!

Có tồn tại đoạn mã javascript , mà bạn có thể thêm dưới dạng dấu trang trình duyệt và sau đó kích hoạt trên bất kỳ trang web nào để theo dõi và sửa đổi các yêu cầu. Nó có vẻ như:

nhập mô tả hình ảnh ở đây

Để được hướng dẫn thêm, xem lại trang github.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.