جافاسكريبت - استهلاك خدمة ويب على IIS باستخدام مصادقة ويندوز باستخدام TypeScript
أحاول إجراء طلب GET من تطبيق Angular2 إلى خدمة ويب مستضافة على خادم IIS في الشبكة الداخلية للشركة. قضيت جزءًا كبيرًا من اليوم أقرأ عن CORS وطلبات التحضير المسبق (preflight request). وصلت إلى النقطة التي يرسل فيها الخادم رد 200 على طلب التحضير المسبق، لكن عندما يقوم العميل بالاستدعاء الثاني لطلب المورد الفعلي أحصل على 401 غير مصرح به.
أقدّم الطلب هكذا:
let headers = new Headers({ 'withCredentials': true });
let options = new RequestOptions({ headers: headers });
return this.http.get(url, options)
.map(this.extractData)
.catch(this.handleError);
طلب/استجابة التحليق المسبق
الطلب/الاستجابة التالية
لم أكن متأكدًا مما إذا كنت قد قمت بتكوين الأمان بشكل صحيح على خادم IIS، ولكن عندما جربت مكالمة بسيطة باستخدام jQuery/ajax لم أواجه أي مشاكل وحصلت على البيانات باستخدام (كون withCredentials و crossDomain هما المفتاح):
$.ajax({
type: "GET",
url: "http://xxx:8087/odata/Users",
xhrFields: {
withCredentials: true
},
crossDomain: true,
success: function(msg) {
...
},
error: function(e){
...
}
});
عند النظر إلى الصورة المرتبطة مع الطلب/الاستجابة المصنوع بواسطة TypeScript، هل هناك شيء واضح أفوته لجعل هذا يعمل؟