Tôi gặp sự cố CORS khi tự lưu trữ SignalR với OWIN, điều này chỉ xảy ra khi tôi cố bật xác thực.Các kết nối miền chéo SignalR với tự lưu trữ và xác thực
Các lỗi tôi nhận được trong trình duyệt web của tôi là:
XMLHttpRequest không thể tải http://.../signalr/negotiate?[snip] xứ ... không được phép bởi Access-Control-Allow-Origin
này chỉ xảy ra nếu tôi cho phép xác thực trong máy chủ tự lưu trữ của tôi sử dụng phương pháp này trong this answer:
public void Configuration(IAppBuilder app)
{
var listener = (HttpListener)app.Properties[typeof(HttpListener).FullName];
listener.AuthenticationSchemes = AuthenticationSchemes.Ntlm;
app.MapHubs(new HubConfiguration { EnableCrossDomain = true });
}
Nếu tôi nhận xét ra 01.dòng rồi CORS hoạt động (và tôi đã kiểm tra mọi thứ trong these instructions). Tôi nhận được cùng một vấn đề nếu tôi sử dụng các chương trình xác thực khác hơn NTLM.
Sử dụng Fiddler để kiểm tra những gì đang xảy ra, mà không xác thực cho phép tôi nhìn thấy các tiêu đề CORS cần thiết khi trở về từ máy chủ:
Access-Control-Allow-Credentials: true
Access-Control- Allow-Origin: [máy chủ của tôi]
Tuy nhiên, khi tôi bật xác thực, tôi nhận được phản hồi 401 thiếu các tiêu đề này. Tất cả các yêu cầu có tiêu đề Origin
cần thiết.
Đã kiểm tra SignalR source code có vẻ như các tiêu đề đang được đặt, nhưng có lẽ với xác thực đã bật, HttpListener
sẽ gửi phản hồi 401 ban đầu mà không cần nhấn mã này.
Vì vậy, tôi nghĩ câu hỏi của mình là: Làm cách nào để có được HttpListener
để bao gồm tiêu đề Access-Control-Allow-Origin
trong việc thương lượng các giao thức xác thực?
Bạn có bao giờ nhận được thêm bất kỳ điều này không? Tôi đang gặp vấn đề tương tự ... –