2015-06-23 20 views
5

Tôi đang làm việc trên một tập lệnh AJAX tạo yêu cầu GET thành một URL rút gọn, giống như một liên kết bit.ly. Làm cách nào để tôi thực sự nhận được URL của trang cuối cùng/được chuyển hướng?Làm cách nào để nhận URL cuối cùng sau khi chuyển hướng Ajax?

tôi có thể nhận các tiêu đề phản ứng từ các trang chuyển hướng, nhưng nó không xuất hiện để chứa các thông tin URL:

$.ajax({ 
    url: "http://www.thislinkredirects.com", 
    success: function(data, status, xhr) { 
    var response = $(data); 
    }, 
    complete: function(xhr) { 
    console.log(xhr.getAllResponseHeaders()); 
    } 
}); 

Kết quả:

Date: Tue, 23 Jun 2015 03:22:07 GMT 
Allow: POST, GET, OPTIONS, PUT, DELETE 
Server: lighttpd/1.4.35 
X-Powered-By: PHP/5.3.3 
Transfer-Encoding: chunked 
Access-Control-Allow-Methods: POST, GET, OPTIONS, PUT, DELETE 
Content-type: text/html 
Access-Control-Allow-Origin: * 
Access-Control-Allow-Headers: accept, authorization 

Tôi không có quyền kiểm soát của máy chủ tạo yêu cầu nhận.

+0

bạn có tìm thấy giải pháp nào không? –

+0

Điều duy nhất có hiệu quả đối với tôi là thực hiện cuộc gọi AJAX tới trang web này http://www.wheregoes.com/retracer.php và gửi biểu mẫu giả tạo lên đó để nhận được vị trí cuối cùng của URL. Đó là một cách giải quyết lớn nhưng nó hoạt động. –

Trả lời

0

Thử qua jqXHR để ajaxComplete và sau đó đọc tiêu đề.

Tiêu đề phải hiển thị trường Location:.

+0

Đó là những gì tôi hiện đang làm nhưng cho đến nay phần lớn các liên kết chuyển hướng mà tôi đang thử nghiệm không có trường Vị trí. –

+0

Xem bạn có thể lấy vị trí bằng cách chỉ trích xuất bằng cách sử dụng: 'xhr.getResponseHeader ('Vị trí')' – kRiZ

+1

Làm điều đó trả về giá trị rỗng. –

0

Hãy thử mã này .....

$.ajax({ 
    url: "https://instagram.com/oauth/authorize/?client_id=e40f15a90**c89851d8a66&redirect_uri=http://examle.com&response_type=token", 
    success:function(result,status,xhr){ 
    console.log(xhr.getResponseHeader('Location'));<---NULL 
    } 
}); 
1

Như tôi đã trả lời một câu hỏi tương tự ở đây: https://stackoverflow.com/a/48445360/1398908

Một giải pháp tốt hơn là cung cấp ajax jQuery với một đối tượng tùy chỉnh XHR như thế này:

var xhr = new XMLHttpRequest(); 

$.ajax({ 
    url: '/url', 
    type: 'post', 
    data: '...', 
    xhr: function() { 
     return xhr; 
    } 
}); 

Sau đó, bạn có thể truy cập URL hiện tại trong bất kỳ cuộc gọi lại nào

success: function() { 
    console.log(xhr.responseURL); 
} 
Các vấn đề liên quan