当前位置: 首页 > news >正文

关闭网站怎么不保存我做的更改广告营销案例分析

关闭网站怎么不保存我做的更改,广告营销案例分析,0基础建站网站搭建教程,天津网站设计与制作文章目录 什么是跨域跨域带来的问题 gateway解决跨域解决跨域的其他方式比较代码示例 总结提升 什么是跨域 跨域(Cross-Origin)是指在浏览器中,当一个Web应用程序试图访问与其所属页面不同的源(origin)的资源时&#…

文章目录

  • 什么是跨域
    • 跨域带来的问题
  • gateway解决跨域
    • 解决跨域的其他方式比较
    • 代码示例
  • 总结提升

什么是跨域

跨域(Cross-Origin)是指在浏览器中,当一个Web应用程序试图访问与其所属页面不同的源(origin)的资源时,浏览器会对这种行为进行安全限制,并阻止一些跨域请求,以保护用户的数据安全。

在浏览器遵循同源策略的限制下,同一个源的脚本只能访问相同源下的资源,不能访问其他源下的资源。同源策略通过限制跨域请求,防止恶意网站通过跨站脚本攻击(XSS)和跨站请求伪造(CSRF)等手段盗取用户的敏感信息或进行其他恶意行为。

通常情况下,如果一个请求的协议、主机或端口任意一个与当前页面的源(即协议、主机和端口)不同,则该请求就被认为是跨域请求。

跨域带来的问题

跨域请求受到同源策略(Same-Origin Policy)的限制,主要出于安全考虑。同源策略限制了跨域请求对其他源的读取访问,防止恶意网站窃取用户数据。这种限制导致跨域请求无法直接进行,而带来以下问题:

AJAX请求被拒绝:浏览器会阻止在跨域请求中使用XMLHttpRequest对象进行通信。
Cookie不可用:跨域请求默认不会发送源站的Cookie信息,导致无法验证用户身份。
访问被拒绝:跨域请求可能会受到服务器的访问控制策略阻止。

gateway解决跨域

Gateway(网关)是一种中间层服务,位于客户端和后端服务之间。它负责请求的转发、路由和协议转换等工作,并提供了跨域处理的解决方案。以下是Gateway解决跨域问题的主要方式:

反向代理:Gateway可以作为后端服务的反向代理,将客户端的请求转发到目标服务上。由于Gateway与后端服务在同一域内,因此不存在跨域问题。
跨域资源共享(CORS):Gateway可以配置CORS策略,允许特定域下的请求进行跨域访问。通过在响应头中添加Access-Control-Allow-Origin字段,指定允许跨域请求的域名,实现跨域访问。
JSONP代理:Gateway可以充当JSONP的代理,在服务端发起对目标服务的请求,然后返回给客户端一个回调函数包裹的响应数据。通过动态创建

解决跨域的其他方式比较

在这里插入图片描述

代码示例

@Component
@Order(2)
public class CorsResponseHeaderFilter implements GlobalFilter {private static final String ANY = "*";@Override@SuppressWarnings("serial")public Mono<Void> filter(ServerWebExchange exchange, GatewayFilterChain chain) {return chain.filter(exchange).then(Mono.fromRunnable(() -> {exchange.getResponse().getHeaders().entrySet().stream().filter(kv -> (kv.getValue() != null && kv.getValue().size() > 1)).filter(kv -> (kv.getKey().equals(HttpHeaders.ACCESS_CONTROL_ALLOW_ORIGIN)|| kv.getKey().equals(HttpHeaders.ACCESS_CONTROL_ALLOW_CREDENTIALS)|| kv.getKey().equals(HttpHeaders.VARY))).forEach(kv ->{// Vary只需要去重即可if(kv.getKey().equals(HttpHeaders.VARY)) {kv.setValue(kv.getValue().stream().distinct().collect(Collectors.toList()));} else{List<String> value = new ArrayList<>();if(kv.getValue().contains(ANY)){  //如果包含*,则取*value.add(ANY);kv.setValue(value);}else{value.add(kv.getValue().get(0)); // 否则默认取第一个kv.setValue(value);}}});}));}
}

在这段代码中,通过实现GlobalFilter接口并使用@Component注解,将该类作为一个全局过滤器进行注册。同时使用@Order(2)注解来指定该过滤器的执行顺序。

在filter方法中,首先调用chain.filter(exchange)将请求转发给下一个过滤器或目标服务处理。然后通过then方法和Mono.fromRunnable创建一个新的Mono,在请求完成后执行一些操作。

在这个新的Mono中,我们获取到响应对象ServerHttpResponse,然后遍历响应头的键值对。针对部分特定的响应头,进行以下处理:

对于Access-Control-Allow-Origin、Access-Control-Allow-Credentials和Vary这三个响应头,我们判断其值是否存在且长度大于1(即有多个值)。如果满足条件,我们对其进行相应的处理。
如果是Vary头,则将其值去重,即去除重复的值。
如果是Access-Control-Allow-Origin或Access-Control-Allow-Credentials头,将其值设置为一个新的包含只有一个元素的列表。
如果原始值中包含通配符*,则新列表只包含一个元素*(即保持通配符不变)。
否则,新列表只包含原始值的第一个元素(即保持原样)。
通过这些处理,我们实现了对跨域请求响应头的筛选和修改,确保在跨域请求中返回符合要求的响应头,以便客户端能够正常访问跨域资源。

总结提升

跨域是浏览器限制网页脚本访问不同域名下资源的安全机制。同源策略要求网页脚本只能访问与其所在网页具有相同协议、域名和端口的资源。这种限制是为了保护用户的隐私和安全,防止恶意网站获取用户的敏感信息。

为了解决跨域请求的问题,浏览器提供了跨域资源共享(CORS)等机制。CORS允许服务器在响应中设置特定的HTTP头,以授权其他域名的请求访问资源。通过在响应头中添加Access-Control-Allow-Origin字段,服务器可以指定允许访问的域名。这样,浏览器就可以根据响应头的设置,决定是否允许跨域请求。

除了CORS,还有其他一些解决跨域请求的方法,如JSONP。JSONP通过动态创建

跨域是一个常见的开发问题,了解跨域的原理和解决方法对于开发人员来说是很重要的。通过合理使用CORS和其他跨域解决方案,我们可以在保护用户安全的前提下,实现不同域名之间的数据交互。

http://www.hkea.cn/news/642616/

相关文章:

  • 网站模板资源公司网站推广
  • 广东省建设教育协会官方网站首页html简单网页代码
  • 个人网站意义阿里指数官网最新版本
  • 网站开发方式有哪四种搜索引擎优化课程总结
  • 申请做网站、论坛版主app推广接单
  • 青海网站建设广州seo优化推广
  • 物流公司网站制作模板上海网站关键词排名
  • 广西建设人才网搜索引擎优化的目标
  • 比汉斯设计网站素材图片搜索识图入口
  • php网站架设教程英雄联盟韩国
  • 做毕设好的网站百度客服电话24小时
  • 上海手机网站建设电话咨询seo综合查询系统
  • wordpress 4.6 中文版沈阳seo
  • 文件管理软件天津搜索引擎优化
  • 九亭网站建设全国疫情高峰时间表最新
  • 青岛网站建设公司武汉seo收费
  • mvc网站建设的实验报告怎么做优化
  • 有官网建手机网站千锋教育培训多少钱费用
  • b2c交易模式的网站有哪些百度营销客户端
  • flash 学习网站重庆网站seo多少钱
  • 年终总结ppt模板免费下载网站小红书seo排名规则
  • 自己架设网站口碑营销的产品有哪些
  • 湖北省网站备案最快几天天津百度推广排名优化
  • app在线开发制作平台seo网络优化前景怎么样
  • 商务网站的基本情况网站建设工作总结
  • 山西建设厅网站网络销售怎么聊客户
  • 软装素材网站有哪些seo网络排名优化哪家好
  • 邯郸市做网站建设网络口碑营销案例分析
  • 罗湖网站建设联系电话西安核心关键词排名
  • 如何编写网站电脑清理软件十大排名