Próbuję załadować zawartość (określoną część) zewnętrznej strony internetowej poprzez ajax
wniosek na mojej stronie internetowej. curl
url dla żądania jest jak postępowaćUzyskanie określonej części zewnętrznej strony internetowej za pomocą ajax, która ma http auth
Tak, próbowałem następujące ajax wezwanie, aby uzyskać stronę
var username,password;
$.ajax
({
type: "GET",
url: "http://X.X.X.X:PORT/",
dataType: 'text/html',
async: false,
crossDomain: true,
data: '{"username": "username", "password" : "secret"}',
success: function(){
alert('Thanks for your comment!');
},
error: function (err){
alert(err);
},
beforeSend: function (xhr) {
xhr.setRequestHeader ("Authorization", "Basic " + btoa(username + ":" + password));
}
});
To daje mi błąd CORS
(Cross-Origin Request Blocked:
). Po zmianie dataType
z text/html
na jsonp
. I otrzymał odpowiedź z następującym błędem
[wyjątek ... "Failure" nsresult: "0x80004005 (NS_ERROR_FAILURE)" Lokalizacja: "JS frame :: https://ajax.googleapis.com/ajax/libs/jquery/1.11.3/jquery.min.js :: .send :: linia 5" danych: no]
Część sukcesu wywołania ajax nie jest wykonywana w obu przypadkach. Tylko trafia do części błędu. Jeśli otrzymałem stronę, niż mogę pobrać konkretną część za pomocą następującej metody.
var data = $.parseHTML(res); //<----try with $.parseHTML().
$(data).find('div.content').each(function(){
$('#here').append($(this).html());
Jak uzyskać żądany rezultat?
Po sugestii @GuRu, próbowałem następujących, ale nadal metoda sukcesu nie jest wywoływana.
var username,password;
$.ajax({
type: "GET",
url: "http://X.X.X.X:PORT/",
data: '{"username": "user", "password" : "secret"}',
async:true,
dataType : 'jsonp',
crossDomain:true,
success: function(){
alert('Thanks for your comment!');
},
beforeSend: function(xhr) {
xhr.overrideMimeType("text/plain; charset=x-user-defined");
xhr.setRequestHeader ("Authorization", "Basic " + btoa(username + ":" + password));
}
});
try "Content-Type" nagłówek do ' "text/javascript"' zamiast 'text/html' –
@ParthTrivedi Próbowałem "text/javascript" w' dataType' ale nadal ten sam błąd. –
Czy próbowałeś z 'application/javascript' –