Tôi đã tìm cách gỡ lỗi này và dường như là lỗi chrome vì chúng tôi đã gặp sự cố tương tự.
Để tham khảo, tôi đã đệ trình một báo cáo lỗi để crom ở đây: CORS pre-flight and subsequent requests are very slow only on Chrome
tôi thêm này ở đây để giúp ngăn chặn hơn bất kỳ nhà phát triển dành nửa ngày điều tra nó;) Sẽ cập nhật khi chúng ta ở đây nhiều hơn từ Chromium.
Tổng quan về báo cáo lỗi sau:
UserAgent:
Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.132 Safari/537.36
bước để tạo lại vấn đề:
- Có app.domain.com
- Lis t mục
- Có api.domain.com
- Enable CORS trên API để cho phép truy cập
- Kiểm tra phản ứng trong DevTools, xem OPTIONS và GET yêu cầu được tham gia lên đến 300ms +
gì được mong đợi hành vi?
Thời gian phản hồi phải chính xác.
Điều gì đã xảy ra?
Chúng tôi đang sử dụng dịch vụ micros microsices và nhận thấy sự chênh lệch lớn về thời gian giữa các trình duyệt - chrome là chậm nhất tới 100x.
khi chúng tôi đã kiểm tra thời gian từ chương trình phụ trợ, các câu trả lời mất tối đa 10ms, với hầu hết là phụ 1ms. Khi kiểm tra thời gian theo devtools, các phản hồi tương tự sẽ xuất hiện ở ~ 100ms ~ 1s.
Công việc này có hiệu quả không?
N/A
Chrome phiên bản: 63.0.3239.132 Channel: ổn định OS Version: 10,0 Phiên bản Flash:
Trong Firefox (và bất kỳ trình duyệt khác), các yêu cầu chính xác cùng trở lại trong ~ 1-20ms như mong đợi.
Khi cố gắng chẩn đoán thêm, chúng tôi đã sử dụng Fiddler của Telerik để kiểm tra thời gian phản hồi mạng thực tế và xác nhận rằng chúng đã được Chrome gửi và nhận trong thời gian dự kiến của chúng tôi. Kết luận duy nhất chúng tôi có thể đến là nội dung nào đó bên trong Chrome đang làm chậm quá trình xử lý các yêu cầu này.
Chúng tôi đã thử tất cả các hoán vị của chrome://flags#out-of-blink-cors
và chrome://flags#enable-site-per-process
, đó là hai tùy chọn mà chúng tôi phát hiện có vẻ mơ hồ có liên quan. Không có gì có vẻ để giúp đỡ.
Chúng tôi cũng đã tìm thấy nhiều bài viết Stack Overflow về một vấn đề tương tự mà làm cho đề cập đến nó là một lỗi Chrome, nhưng tôi đã không thể tìm thấy nó thông báo ở đây:
Chúng tôi vừa thử nghiệm Chrome trên hệ điều hành MacOS và nó không xuất hiện là một vấn đề - như vậy có thể được giới hạn trong Windows.
Chrome:
Edge:
Firefox:
Có lẽ bạn có thể làm thủ công 'yêu cầu OPTIONS' với 'curl' hoặc một số REST- thử như phục hồi? Bạn cũng có nghĩa là bạn không nhận được yêu cầu 'OPTIONS' trên Firefox hay yêu cầu' OPTIONS' là nhanh? – Lux
@Lux Tôi đã thử với Postman để phát lại yêu cầu OPTIONS và không gặp phải độ trễ. Firefox thực hiện yêu cầu OPTIONS nhưng nó không chậm. –
Tôi biết có thể âm thanh hơi lạ nhưng điều này sẽ thông qua một proxy http tôi có nghĩa là mã ember khi gọi api là nó đi qua một proxy http? – vaibhav