2009-04-07 35 views
5

Có thể xác định - phía máy chủ - liệu một trang đã được tải trong một số IFrame không?Phát hiện phía máy chủ mà một trang được hiển thị bên trong một IFrame

Khi xảy ra lỗi nhất định trong ứng dụng của tôi, người dùng sẽ được chuyển hướng đến Default.aspx và thông báo lỗi được hiển thị. Văn bản của thông báo lỗi đó được đặt trong phiên bằng mã xử lý ngoại lệ. Thông báo lỗi sẽ bị xóa khỏi phiên khi nó đã được hiển thị.

Tuy nhiên, một phần đơn đăng ký của tôi phải sử dụng số IFrame (đang thực hiện kiểm tra thanh toán bằng thẻ an toàn 3D, yêu cầu IFrame để hiển thị giao diện xác thực của nhà cung cấp thẻ). Nếu xảy ra lỗi trong quá trình này, chuyển hướng của tôi sẽ có hiệu lực trong phạm vi IFrame. Tôi đang sử dụng JavaScript để phát hiện và tải lại chính xác Default.aspx, nhưng điều này có nghĩa là tôi nhận được hai Page_Loads liên tiếp nhanh chóng và thông báo lỗi chỉ được hiển thị trên lần đầu tiên (và sau đó xóa).

+1

Mạng nhà phát triển Mozilla. Tôi thực sự nghĩ rằng tôi chỉ cần mở ra một toàn bộ có thể của sâu với điều này và có lẽ không nên thêm thông điệp của tôi ở đây cho đến khi tôi học được bản thân mình những gì đang xảy ra, xin lỗi. (xem http://stackoverflow.com/questions/15344187/how-does-it-appear-that-mdn-can-detect-a-request-from-an-iframe-on-the-server-si) – JayC

Trả lời

0

Tôi không nghĩ rằng bạn có thể phát hiện theo ý nghĩa của việc có một số loại chức năng Page.IsInIFrame(), nhưng bạn có thể xem xét có các lớp cơ sở khác nhau cho các trang được tải trong một khung nội tuyến và những Vì vậy, bạn có thể biết lỗi là từ một yêu cầu đã được cho một trang IFrame có thể giúp một số phạm vi.

0

Không có cách nào từ phía máy chủ. Cách duy nhất là thông qua javascript. Khi bạn thực hiện chuyển hướng, bạn có thể chuyển thông báo lỗi hoặc mã qua chuỗi truy vấn không?

0

Nó sẽ không hoạt động để chuyển hướng bằng cách sử dụng Javascript với window.location? Buộc chuyển hướng trang đầy đủ?

0

chỉ cần kiểm tra url của trang hiện tại .. nếu nó giống với trang IFrame thì chuyển hướng đến Default.aspx hoặc bất kỳ thứ gì.

Dim urlpath1 As String = HttpContext.Current.Request.Url.AbsoluteUri 
If Right(urlpath1, 13) = "WebForm1.aspx" Then 
     Response.Redirect("~/") 
    Else 
     Response.Write("It's OK!") 
    End If 
+0

Chỉ cần lưu ý rằng bạn cần phải sử dụng Request.UrlReferrer và không Request.Url làm Request.Url sẽ trả lại Url iframe. –

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