<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Clickjacking</title> <style> iframe { width: 100%; height: 100%; display: block; position: absolute; /*指定iframe和button爲絕對定位*/ z-index: 20; /*指定在垂直方向上的高低*/ opacity: 0.01; /*指定透明度*/ <!--注意,iframe的透明度不能設置爲0,若是設置爲0的話,就不能接受任何的點擊事件了--> } button { position: absolute; left: 40px; top: 65px; z-index: 10; } </style> </head> <body> <h2>哇塞,這張照片裏怎麼會有我!快來看看有沒有你吧!</h2> <button>查看照片</button> <iframe src="https://blog.csdn.net/zjy123078_zjy/" frameborder="0"></iframe> </body> </html>
咱們能夠查看一下網頁源代碼,以下:html
class XFrameOptionsMiddleware(MiddlewareMixin): """ Set the X-Frame-Options HTTP header in HTTP responses. Do not set the header if it's already set or if the response contains a xframe_options_exempt value set to True. By default, set the X-Frame-Options header to 'SAMEORIGIN', meaning the response can only be loaded on a frame within the same site. To prevent the response from being loaded in a frame in any site, set X_FRAME_OPTIONS in your project's Django settings to 'DENY'. """ def process_response(self, request, response): # Don't set it if it's already in the response if response.get('X-Frame-Options') is not None: return response # Don't set it if they used @xframe_options_exempt if getattr(response, 'xframe_options_exempt', False): return response response['X-Frame-Options'] = self.get_xframe_options_value(request, response) return response def get_xframe_options_value(self, request, response): """ Get the value to set for the X_FRAME_OPTIONS header. Use the value from the X_FRAME_OPTIONS setting, or 'DENY' if not set. This method can be overridden if needed, allowing it to vary based on the request or response. """ return getattr(settings, 'X_FRAME_OPTIONS', 'DENY').upper()