Je travaille sur un script AJAX qui envoie une demande GET à une URL abrégée, comme un lien bit.ly. Comment puis-je obtenir l’URL de la page finale / redirigée?
Je peux obtenir les en-têtes de réponse à partir de la page redirigée, mais elle ne semble pas contenir les informations d’URL:
$.ajax({ url: "http://www.thislinkredirects.com", success: function(data, status, xhr) { var response = $(data); }, complete: function(xhr) { console.log(xhr.getAllResponseHeaders()); } });
Résultat:
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
Je n’ai pas le contrôle du serveur faisant la demande de get.
Comme j’ai répondu à une question similaire ici: https://stackoverflow.com/a/48445360/1398908
Une meilleure solution consiste à fournir à ajax de jQuery un object xhr personnalisé comme celui-ci:
var xhr = new XMLHttpRequest(); $.ajax({ url: '/url', type: 'post', data: '...', xhr: function() { return xhr; } });
Ensuite, vous pouvez accéder à l’URL actuelle dans n’importe quel rappel
success: function () { console.log(xhr.responseURL); }
Essayez de passer jqXHR
à ajaxComplete, puis lisez l’en-tête.
L’en-tête doit afficher un champ Location:
:.
Essayez ce code …..
$.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 } });