2014-09-04 15 views
40

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

53

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.

3

Đâ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.

+2

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

+0

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

Các vấn đề liên quan