javascript - Sử dụng dịch vụ web trên IIS với xác thực Windows bằng TypeScript
Tôi cố gắng thực hiện một yêu cầu GET từ ứng dụng Angular2 đến một dịch vụ web được lưu trữ trên một máy chủ IIS trong mạng công ty. Tôi đã dành phần lớn thời gian trong ngày để tìm hiểu về CORS và yêu cầu preflight. Tôi đã đưa nó đến mức mà máy chủ gửi lại phản hồi 200 cho yêu cầu preflight nhưng khi client thực hiện cuộc gọi thứ hai để thực sự yêu cầu tài nguyên, tôi nhận được 401 Unauthorized.
Tôi thực hiện yêu cầu như sau:
let headers = new Headers({ 'withCredentials': true });
let options = new RequestOptions({ headers: headers });
return this.http.get(url, options)
.map(this.extractData)
.catch(this.handleError);
Yêu cầu/Phản hồi preflight
Yêu cầu/phản hồi sau
Tôi không chắc liệu mình đã cấu hình bảo mật đúng trên máy chủ IIS hay chưa, nhưng khi tôi thử với một cuộc gọi đơn giản sử dụng jQuery/ajax, tôi không gặp vấn đề gì và nhận lại dữ liệu (với withCredentials và crossDomain là yếu tố quan trọng):
$.ajax({
type: "GET",
url: "http://xxx:8087/odata/Users",
xhrFields: {
withCredentials: true
},
crossDomain: true,
success: function(msg) {
...
},
error: function(e){
...
}
});
Nhìn vào hình ảnh liên kết với yêu cầu/phản hồi được thực hiện bằng TypeScript, có phải có điều gì rõ ràng mà tôi đang bỏ lỡ để làm cho điều này hoạt động không?