Tôi đang tìm kiếm các lý do bảo mật cụ thể về lý do tại sao điều này được thêm vào. Đó là loại thời điểm WTH khi tôi đang thực hiện cors và có thể thấy tất cả các tiêu đề được trả lại nhưng tôi không thể truy cập chúng thông qua javascript ..Tại sao Access-Control-Expose-Headers lại cần thiết?
Trả lời
CORS được thực hiện theo cách mà nó không phá vỡ các giả định được thực hiện trong CORS trước, cùng một thế giới chỉ có nguồn gốc.
Trong thế giới trước CORS, khách hàng có thể kích hoạt yêu cầu có nguồn gốc chéo (ví dụ, thông qua thẻ tập lệnh), nhưng không đọc được tiêu đề phản hồi.
Để đảm bảo rằng CORS không phá vỡ giả định này, thông số CORS yêu cầu máy chủ cấp quyền rõ ràng cho khách hàng để đọc các tiêu đề đó (thông qua tiêu đề Access-Control-Expose-Headers
). Bằng cách này, các yêu cầu CORS trái phép hoạt động như họ đã làm trong thế giới trước CORS.
Đây là một câu hỏi khá hay. Nhìn qua http://www.w3.org/TR/cors/#simple-response-header, không rõ tại sao bạn muốn hoặc cần phải làm điều này.
Thông số CORS đặt trọng lượng vào ý tưởng rằng bạn phải có một cái bắt tay được yêu cầu trước, nơi máy khách yêu cầu một loại kết nối và máy chủ phản hồi rằng nó sẽ cho phép nó - vì vậy điều này có thể một khía cạnh khác của điều đó.
Theo chiều dài nội dung mặc định không phải là tiêu đề được phép vì vậy tôi đã gặp phải vấn đề tương tự (sau này khi tôi cần truy cập WebDAV và phải sửa đổi thông số cho phép) .. CORS thực sự không tạo ra nhiều ý nghĩa (với tôi) ngay từ đầu nên nó sẽ không làm tôi ngạc nhiên nếu những câu nói đó là mâu thuẫn.
- 1. Tại sao typeof lại cần thiết?
- 2. Tại sao chức năng Matlab "feval" lại cần thiết?
- 3. Tại sao "annotatedClasses" lại cần thiết nếu có @Entity?
- 4. Tại sao việc mở rộng eta này lại cần thiết?
- 5. SwingUtilities.invokeLater() tại sao cần thiết?
- 6. Tại sao nút lưu cần thiết?
- 7. Tại sao cờ - nhánh mới cần thiết?
- 8. Tại sao session_ destroy() là cần thiết?
- 9. Tại sao là gián tiếp cần thiết
- 10. Tại sao document.getElementById không cần thiết?
- 11. Truyền tới nút là không cần thiết - Tại sao?
- 12. Tại sao Sinatra cần phải tua lại thân yêu cầu?
- 13. Chúng tôi có thể có nhiều NSAutoReleasePools không? Tại sao điều này lại cần thiết?
- 14. Tại sao linq-2-sql lại tạo thêm các đối tượng không cần thiết?
- 15. Tại sao ràng buộc `Sized` lại cần thiết trong đặc điểm này?
- 16. Tại sao time.sleep lại cần thiết để chạy một số goroutine?
- 17. Event.waitUntil làm gì trong nhân viên phục vụ và tại sao nó lại cần thiết?
- 18. Tại sao chú thích kiểu này trong Haskell cần thiết?
- 19. Tại sao loại gợi ý cần thiết trong PHP?
- 20. Tại sao các đối tượng ký tự HTML cần thiết?
- 21. Tại sao session_start là cần thiết khi sử dụng phiên?
- 22. Tại sao từ khóa mới không cần thiết cho Chuỗi
- 23. Phương thức jQuery 1.7 .on(), tại sao cần thiết?
- 24. Tại sao upcasting cần thiết trong mã Scala này?
- 25. Tại sao hàm tạo cơ sở() không cần thiết?
- 26. Tại sao -L cần thiết khi -rath được sử dụng?
- 27. Tại sao RedirectStandardOutput không có mã ANSI cần thiết?
- 28. Tại sao biểu tượng của PHP lại cần setlocale?
- 29. Tại sao CruiseControl.NET cần được khởi động lại sau GetCcNetConfigFiles?
- 30. Tại sao thẻ `a` lại cần` tabindex = 0`?
CORS cảm thấy thất thường vì các tác giả đã chú ý suy nghĩ kỹ về nó. CORS phải bật yêu cầu có nguồn gốc chéo trong khi vẫn bảo vệ chính sách có cùng nguồn gốc của trình duyệt. Đó là sự cần thiết phải cân bằng hai lực (đôi khi phản đối) khiến cho đặc tả CORS khó hiểu. – monsur
Liên kết đến đề xuất là con trỏ hữu ích nhất mà tôi đã nhận được trong tháng này và hơn thế nữa. Tôi biết về Access-Control-Allow-Headers nhưng không được coi là Access-Control-Expose-Headers và không thể hiểu tại sao tiêu đề "Links" của tôi không nhận được Backbone Collection của tôi. Kinh ngạc. – mcdave