2011-11-29 25 views
9

Tôi có một trang web, theo thiết kế và sở thích của khách hàng, có thể được phục vụ bằng cách sử dụng HTTP hoặc HTTPS. Công ty khách hàng chỉ chọn có hay không liên kết đến trang web của chúng tôi bằng cách sử dụng http: // hoặc https: // và IIS thực hiện phần còn lại. Một tính năng đang được thêm vào một trang liên quan đến thông tin nhạy cảm chỉ nên được xem qua SSL. Khách hàng đã đồng ý rằng tính năng bổ sung này sẽ bị tắt trên trang này khi không sử dụng kết nối HTTPS.Làm cách nào để kiểm tra xem trang hiện tại có đang sử dụng SSL trong ASP.Net không?

Trong sự kiện Page_Load tôi muốn thêm câu lệnh IF để kiểm tra xem trang hiện có đang được xem qua HTTPS để hiển thị hay vô hiệu tính năng tùy chọn này. Tôi có thể đọc URL để xem nó có bắt đầu bằng https: // hay không nhưng lo lắng rằng cách tiếp cận này không an toàn.

Có thuộc tính nào có thể được kiểm tra để kiểm tra HTTPS trong sự kiện Page_Load không?

Trả lời

24

Bạn đang tìm kiếm Request.IsSecureConnection.

+0

Cảm ơn rất nhiều SLaks! – David

+0

Nhưng nó không hoạt động trong môi trường máy chủ cân bằng tải. Vui lòng kiểm tra bài đăng này http://stackoverflow.com/questions/998397/why-does-request-issecureconnection-return-false-when-true-is-expected. Chúng tôi phải đối mặt với cùng một vấn đề –

1

Nếu bạn đang sử dụng IIS 7 (hoặc mới hơn) và đang lên kế hoạch chuyển hướng yêu cầu đến trang của bạn qua kết nối HTTP tới kết nối HTTPS, hãy xem xét sử dụng IIS URL Rewrite Module.

Bạn sẽ có thể định cấu hình giải pháp thay vì mã hóa giải pháp đó. Ví dụ: bạn có thể định cấu hình Quy tắc chuyển hướng để lấy URL như http://my.host.com/my-secure-page.aspx và chuyển hướng URL đó đến https://my.host.com/my-secure-page.aspx.

Bạn có thể làm nhiều hơn với mô-đun này và vẻ đẹp của nó là bạn có thể làm điều đó mà không cần chạm vào mã ứng dụng của bạn.

Xem Redirect HTTP to HTTPS with IIS 7 để biết thêm chi tiết.

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