2015-01-12 15 views
8

Tôi cần liên hệ với máy chủ để sử dụng dịch vụ HTTP.Sử dụng xác thực cơ bản http với cuộc gọi Ajax

Cố gắng truy cập dịch vụ bằng trình duyệt, sử dụng https://example.com/service Tôi nhận được hộp thoại xác thực cơ bản.

Thay đổi URL thành https://username:[email protected]/service dễ dàng bỏ qua điều đó.

Đang cố gắng để làm điều tương tự sử dụng Ajax luôn dẫn đến 401 Unauthorized mặc dù:

$.ajax({ 
    url: 'https://username:[email protected]/service', 
    // rest repeats 
    type: "GET", 
    async: true, 
    success: function(text) { alert('success'); }, 
    error: function (text) { alert('error') }, 
    complete: function(text) { alert('complete'); } 
}); 
$.ajax({ 
    url: 'https://example.com/service', 
    username: username, 
    password: password, 
    // snip repeat 
}); 
$.ajax({ 
    url: 'https://example.com/service', 
    beforeSend: function(xhr) { 
     xhr.setRequestHeader("Authorization", "Basic " 
      + btoa(username + ":" + password)); 
    }, 
    // snip repeat 
}); 
+0

Khám phá http://stackoverflow.com/a/11960692/1730482. – marklap

+0

@marklap Tôi alredy đã kiểm tra câu hỏi đó, nhưng tôi vẫn gặp lỗi 401 – Ste

+0

bạn đã thử giải pháp mà tôi đã liên kết đến chưa? Khối thứ hai trong giải pháp đó cụ thể? – marklap

Trả lời

7

tôi phải vật lộn với một kịch bản tương tự như bản thân mình .. gì đã làm các trick đã sử dụng jsonp (ugh):

$.ajax({ 
     url: "https://localhost:8443/v1/accounts", 
     type: 'GET', 
     dataType: 'jsonp', 
     beforeSend: function (xhr) { 
      xhr.setRequestHeader('Authorization', 'Basic bHVpZ2lAZ21haWwuY29tOmFiYzEyMzQ1'); 
     } 
    }) 
Các vấn đề liên quan