2012-06-25 28 views
50

Tôi đã có trang chuyển hướng khi không nên và tôi đang cố gắng tìm ra ai đang thực hiện. Trước tiên, tôi đã thử chiếm đoạt window.location:Break khi thay đổi window.location?

window.location = (function (location) { 
    // location is now hidden inside a closure. We can override it 
    var Location = Object.create(location); 
    // Location is now our proxy. We can use it to catch changes 
    window.__defineGetter__('location', function() { return Location }); 
    window.__defineSetter__('location', function (x) { debugger; location = x; return x; }); 
    // etc etc, considered assignments to location.href, location.search, location.host etc., as well as calls to location.replace and location.assign 
}(window.location)); 

Điều đó hoàn toàn không hiệu quả trong Chrome. Bạn không thể làm setters và getters trên window.location vì lý do an ninh. ĐƯỢC. Điều tiếp theo tôi đã cố gắng đã được quan sát onunload và onbeforeunload:

['unload', 'beforeunload'].forEach(function (evName) { 
    window.addEventListener(evName, function() { 
     debugger; // Chance to check everything right before the redirect occurs 
    }); 
}); 

Tôi biết rằng giá trị của window.location sẽ giữ nguyên cho đến sau sự kiện onunload, một lần nữa vì những lý do an ninh, nhưng tôi đã hy vọng cho một số đầu mối khác ; không may mắn như vậy. Tiếp theo tôi đã thử đặt các điểm ngắt tại mọi điểm tôi có thể tìm thấy trong các kịch bản của riêng tôi, nơi window.location có thể được gán. Không ai trong số họ được nhấn theo trình gỡ lỗi Chrome. Argh. Chuyển hướng này không xảy ra trong FF, nhân tiện, và tôi đã thử khởi động lại Chrome. Tôi cảm thấy như tôi đã thực sự cố gắng tất cả mọi thứ và nhận được hư không, mà hy vọng có nghĩa là tôi về để lên cấp như một nhà phát triển? Xin vui lòng?

Có cách nào trong bất kỳ trình duyệt nào cho tôi hay không, con người điều hành trình gỡ rối, để ngắt dòng đang chuyển hướng vị trí trang? Tôi hiểu có những ý nghĩa bảo mật cho phép truy cập tự động vào thông tin đó, nhưng không có gì đặc quyền cho nhà phát triển và cho phép một cách để làm điều đó không? Nếu không, cách bình thường để đối phó với một tình huống như thế này là gì? Nó có vẻ phổ biến đủ và tôi không nghĩ rằng bất cứ ai thích bị chặn cho giờ hoặc ngày trên một vấn đề khái niệm đơn giản. TIA

+2

trường hợp xấu nhất bạn chỉ có thể đặt điểm ngắt ở đâu đó và sau đó tự bước qua mã cho đến khi bạn tìm thấy người phạm tội –

+1

Đúng và đó là những gì tôi đang làm, nhưng như một bài tập xem xét trường hợp chuyển hướng đến từ động bao gồm thẻ tập lệnh: // Chuyển hướng đến google.com document.body.appendChild (document.createElement ('script')). appendChild (document.createTextNode (decodeURIComponent ( '% 77% 69% 6e% 64% 6f% 77% 2e% 6c% 6f% 63% 61% 74% 69% 6f% 6e% 2e% 61% 73% 73% 69% 67% 6e% 28% 27% 68 \ % 74% 74% 70% 3a% 2f% 2f% 77% 77% 77% 2e% 67% 6f% 6f% 67% 6c% 65% 2e% 63% 6f% 6d% 27% 29 '))) Đây là lý do tại sao tôi tự hỏi nếu có một mẹo để cắt nút gordian, hoặc nếu không, những thuận lợi làm gì để giảm thiểu thời gian dành cho các vấn đề như thế này. –

+1

Mọi cập nhật về điều này? Tôi đang cố gắng điều tương tự. –

Trả lời

15

Tab mạng giúp bạn, bật hộp kiểm lưu trữ nhật ký, cột trình khởi tạo sẽ chứa vị trí javascript gây ra chuyển hướng.

+16

Điều này sẽ hữu ích, ngoại trừ trong trường hợp của tôi, nó chỉ nói "Khác". Không hữu ích lắm, Chrome. ': /' – qJake

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