技术标签: SpringSecurity eureka iframe JAVA后端
最近需要让eureka的管理页面能够嵌入到我们的后台管理中,我们使用标签,代码如下所示:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<style>
html, body {
height: calc(100%);
margin: 0;
}
</style>
</head>
<body>
<iframe style="width: 100%; height: 100%" src="http://localhost:18001/login" frameborder="0" ></iframe>
</body>
</html>
但是发现无法直接正常显示:
F12打开调试页面,发现下列的错误信息:
Refused to display 'http://localhost:8761/' in a frame because it set 'X-Frame-Options' to 'deny'
这是因为Spring Security默认设置X-Frame-Options 为 deny:拒绝
X-Frame-Options
下面介绍下X-Frame-Options主要用处是用于防止点击劫持,点击劫持(ClickJacking)是一种视觉上的欺骗手段。攻击者使用一个透明的iframe,覆盖在一个网页上,然后诱使用户在网页上进行操作,此时用户将在不知情的情况下点击透明的iframe页面。通过调整iframe页面的位置,可以诱使用户恰好点击在iframe页面的一些功能性按钮上。 HTTP响应头信息中的X-Frame-Options,可以指示浏览器是否应该加载一个iframe中的页面。如果服务器响应头信息中没有X-Frame-Options,则该网站存在ClickJacking攻击风险。网站可以通过设置X-Frame-Options阻止站点内的页面被其他页面嵌入从而防止点击劫持。
X-Frame-Options响应头。赋值有如下三种:
解决方案
从这里就可以看到,是因为Spring Security默认设置X-Frame-Options响应头是 DENY,也就是不能被嵌入到任何iframe中,这也造成了我们无法正常显示eureka页面,所以我们需要在Spring Security的配置文件中设置关闭X-Frame-Options即可,也就是加入下面这句
.headers().frameOptions().disable();
完整代码如下:
@Configuration
@EnableWebSecurity
public class WebSecurityConfig extends WebSecurityConfigurerAdapter {
@Override
protected void configure(HttpSecurity http) throws Exception {
http.sessionManagement().sessionCreationPolicy(SessionCreationPolicy.NEVER);
http.csrf().disable()
.headers().frameOptions().disable();
}
}
添加后,就能够正常显示页面了:
参考资料:原博文
这时,在ListView外面嵌套一个Expanded就可以了,尺寸计算的问题,Expanded就是ListView有多大就有多大可以滚动,也不会报错了,container就是container多大ListView就有多大:new Expanded(child: new ListView(…));...
最近在项目中,需要打开外部网页。于是将网页嵌在了iframe标签里面,在PC测试没有问题,自适应良好,但是转入IOS 真机webview中,iframe 却不能很好地适应屏幕大小,总是超出屏幕尺寸,需要左右滚动才能看到完整页面。谷歌了一天,各种解决方案都试了,都没有用,最后发现综合几种解决方案,有效。代码如下: <div style="overflow: auto;-webkit-ove..._h5 通过iframe打开h5
Apollo无人驾驶平台的离线搭建与使用1.准备工作2.安装相关依赖环境2.1 安装ubuntu16.042.2 安装ROS环境2.3 安装docker2.4 加载docker的镜像3. 使用Apollo仿真平台3.1 启动并进入docker3.2 编译与运行对于学习无人驾驶的人来说,apollo是一个比较完整且系统的无人驾驶平台,比较适合入门。学习的第一步是安装并使用该平台,安装过程中网上有很..._百度 apollo 能不能离线使用
打开终端输入一下代码就可以啦!while(True): str=input("用户::"); print("假AI::"+str.strip("吗??")+"!");一个例子:Python strip()方法Python strip() 方法用于移除字符串头尾指定的字符(默认为空格或换行符)或字符序列。注意:该方法只能删除开头或是结尾的字符,不能删除中间部分的字符。strip()方法语法:str.strip([chars]);参数:chars ,移除字符串头尾指定的字符序列。返回值_python 人头像虚拟讲话
[size=medium]公钥是与私钥算法一起使用的密钥对的非秘密一半。公钥通常用于加密会话密钥、验证数字签名,或加密可以用相应的私钥解密的数据。公钥和私钥是通过一种算法得到的一个密钥对(即一个公钥和一个私钥)其中的一个向外界公开,称为公钥;另一个自己保留,称为私钥。通过这种算法得到的密钥对能保证在世界范围内是唯一的。使用这个密钥对的时候,如果用其中一个密钥加密一段数据,必须用另一个密钥解密。比如..._rsa seed
生成普通序列号star = 0def num(): global star star += 1 return star生成序号,并且进行格式化star = 0def num(): global star star += 1 format = star return str(format).zfill(3)..._arcgis软件序列号
from elasticsearch import Elasticsearch as esinstance = es(hosts='192.168.21.120')query = { "script": { "lang": "painless", "inline": "if(ctx._source.AREA=='上海') {ctx._source.OR..._es update 接口 批量
Win10安装Mysql8.01.下载2.环境变量3.配置文件 my.ini4.启动服务5.修改密码和登录限制6.测试连接Windows-Server-mysql-8.0.21-winx64.zip## 错误提示:丢失msvcp120.dll ,msvcr120.dll## 错误提示:没有响应控制功能错误提示:无法正常启动(0xc000007b )错误提示:服务没有报任何错误_mysql-8.0.21-winx64.zip 下载
用JavaScript编写一个Java虚拟机?谈谈哗众取宠的BicaVM 今日目睹某网络新闻,开篇明义便包含如下几行文字【程序员Artur Ventura,这位超级大牛,用JavaScript写了一个java虚拟机BicaVM】继而再读,惊见其中“超级大牛”、“神人”等溢美之词不绝于耳,崇拜、神往之心溢于言表。仿佛BicaVM就是天上有地下无的..._orto是一个用javascript实现的java虚拟机
Java输出PPT文件(二) - 占位符数据替换_java导出ppt
RGB三色LED灯,相当于把三种颜色的LED灯组合在一起,它有4条腿,长的那条腿是阴极或阳极,要接三个电阻,可以用micropython编程让灯发出不同颜色的光。..._rgb灯怎样接电阻
想要了解计算机二级证书到怎么领的小伙伴,赶紧过来瞧瞧吧!下面由出国留学网小编为你精心准备了“计算机二级证书怎么领 考试成绩怎么算”,本文仅供参考,持续关注本站将可以持续获取更多的消息!计算机二级证书怎么领计算机二级证书领取分两种情况证书直邮和统一发放。其中证书直邮是指考试结束后半个月内会让考生们开始申请证书直邮,申请直邮以后,会在成绩出来(考试结束后50天左右)10日内安排邮寄。统一发放:统一发放..._计算机二级成绩是按照比例算吗