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

山西网站seo怎么设自己的网站

山西网站seo,怎么设自己的网站,青岛网站建设莫道网络,阜阳做网站的公司网关的作用: 对用户请求做身份认证、权限校验 将用户请求路由到微服务#xff0c;并实现负载均衡心 对用户请求做限流 网关搭建步骤: 1.创建项目#xff0c;引入nacos服务发现和gateway依赖 2.配置application.yml#xff0c;包括服… 网关的作用:         ·对用户请求做身份认证、权限校验         ·将用户请求路由到微服务并实现负载均衡心         ·对用户请求做限流 网关搭建步骤:         1.创建项目引入nacos服务发现和gateway依赖         2.配置application.yml包括服务基本信息、nacos地址、路由 路由配置包括:         1.路由id:路由的唯一标示         2.路由目标(uri):路由的目标地址http代表固定地址lb代表根据服务名负载均衡         3.路由断言( predicates) :判断路由的规则         4.路由过滤器( filters) :对请求或响应做处理 PredicateFactory的作用是什么?         读取用户定义的断言条件对请求做出判断 Path/user/**是什么含义?         路径是以/user开头的就认为是符合的 过滤器的作用是什么?         1、对路由的请求或响应做加工处理比如添加请求头         2、配置在路由下的过滤器只对当前路由的请求生效 defaultFilters的作用是什么?         对所有路由都生效的过滤器 全局过滤器的作用是什么?         对所有路由都生效的过滤器并且可以自定义处理逻辑 实现全局过滤器的步骤?         1、实现GlobalFilter接口         2、添加Order注解或实现Ordered接口         3、写处理逻辑 路由过滤器、defaultFilter、全局过滤器的执行顺序?         1、order值越小优先级越高         2、当order值一样时顺序是defaultFilter最先然后是局部的路由过滤器最后是全局过滤器 CORS跨域要配置的参数包括哪几个?         1、允许哪些域名跨域?         2、允许哪些请求头?         3、允许哪些请求方式?         4、是否允许使用cookie?         5、有效期是多久? 目录 搭建网关服务的步骤: 1、创建新的module引入SpringCloudGateway的依赖和nacos的服务发现依赖: 2、编写路由配置及nacos地址 网关路由可以配置的内容包括: 给所有进入userservice的请求添加一个请求头 给所有服务加请求头 全局过滤器GlobalFilter 过滤器执行顺序 跨域问题处理 搭建网关服务的步骤: 1、创建新的module引入SpringCloudGateway的依赖和nacos的服务发现依赖: 创建一个新的模块 在gateway的pom文件引入SpringCloudGateway的依赖和nacos的服务发现依赖 !--服务发现依赖-- dependencygroupIdcom.alibaba.cloud/groupIdartifactIdspring-cloud-starter-alibaba-nacos-discovery/artifactId /dependency !--网关依赖-- dependencygroupIdorg.springframework.cloud/groupIdartifactIdspring-cloud-starter-gateway/artifactId /dependency?xml version1.0 encodingUTF-8? project xmlnshttp://maven.apache.org/POM/4.0.0xmlns:xsihttp://www.w3.org/2001/XMLSchema-instancexsi:schemaLocationhttp://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsdparentartifactIdcloud-demo/artifactIdgroupIdcn.itcast.demo/groupIdversion1.0/version/parentmodelVersion4.0.0/modelVersionartifactIdgateway/artifactIdpropertiesmaven.compiler.source8/maven.compiler.sourcemaven.compiler.target8/maven.compiler.target/propertiesdependencies!--服务发现依赖--dependencygroupIdcom.alibaba.cloud/groupIdartifactIdspring-cloud-starter-alibaba-nacos-discovery/artifactId/dependency!--网关依赖--dependencygroupIdorg.springframework.cloud/groupIdartifactIdspring-cloud-starter-gateway/artifactId/dependency/dependencies/project 在gateway中创建一个启动类 package cn.itcast.gateway;import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication;SpringBootApplication public class GatewayApplication {public static void main(String[] args) {SpringApplication.run(GatewayApplication.class, args);} }2、编写路由配置及nacos地址 server:     port: 10010 #网关端口 spring:     application:         name: gateway #服务名称     cloud :         nacos:             server-addr: localhost:8848 #nacos地址         gateway:             routes: #网关路由配置                 - id: user-service #路由id自定义只要唯一即可                 # uri: http://127.0.0.1:8081 #路由的目标地址 http就是固定地址                 uri: lb://userservice  #路由的目标地址lb就是负载均衡后面跟服务名称                 predicates:  #路由断言也就是判断请求是否符合路由规则的条件                     - Path/user/**  #这个是按照路径匹配只要以/user/开头就符合要求 运行10010端口可以发现无论是访问order还是user都可以访问了  网关路由可以配置的内容包括: 路由id路由唯一标示 uri路由目的地支持lb和http两种 predicates路由断言判断请求是否符合要求符合则转发到路由目的地 filters路由过滤器处理请求或响应 我们在配置文件中写的断言规则只是字符串这些字符串会被Predicate Factory读取并处理转变为路由判断的条件 例如Path/user/**是按照路径匹配这个规则是由 org.springframework.cloud.gateway.handler.predicate.PathRoutePredicateFactory类来处理的 像这样的断言工厂在SpringCloudGateway还有十几个 Spring提供了11种基本的Predicate工程  这里我们演示After - After2031-04-13T15:14:47.43308:00[Asia/Shanghai] #要求访问时间在这个之后 server:port: 10010 #网关端口 spring:application:name: gateway #服务名称cloud :nacos:server-addr: localhost:8848 #nacos地址gateway:routes: #网关路由配置- id: user-service #路由id自定义只要唯一即可# uri: http://127.0.0.1:8081 #路由的目标地址 http就是固定地址uri: lb://userservice #路由的目标地址lb就是负载均衡后面跟服务名称predicates: #路由断言也就是判断请求是否符合路由规则的条件- Path/user/** #这个是按照路径匹配只要以/user/开头就符合要求- id: order-service #路由id自定义只要唯一即可uri: lb://orderservice #路由的目标地址lb就是负载均衡后面跟服务名称predicates: #路由断言也就是判断请求是否符合路由规则的条件- Path/order/** #这个是按照路径匹配只要以/user/开头就符合要求- After2031-04-13T15:14:47.43308:00[Asia/Shanghai] #要求访问时间在这个之后 最后一行我们用After来限制了必须在这个时间之后才能访问。所以访问失败 这里我们改成Before - Before2031-04-13T15:14:47.43308:00[Asia/Shanghai] #要求访问时间在这个之后 server:port: 10010 #网关端口 spring:application:name: gateway #服务名称cloud :nacos:server-addr: localhost:8848 #nacos地址gateway:routes: #网关路由配置- id: user-service #路由id自定义只要唯一即可# uri: http://127.0.0.1:8081 #路由的目标地址 http就是固定地址uri: lb://userservice #路由的目标地址lb就是负载均衡后面跟服务名称predicates: #路由断言也就是判断请求是否符合路由规则的条件- Path/user/** #这个是按照路径匹配只要以/user/开头就符合要求- id: order-service #路由id自定义只要唯一即可uri: lb://orderservice #路由的目标地址lb就是负载均衡后面跟服务名称predicates: #路由断言也就是判断请求是否符合路由规则的条件- Path/order/** #这个是按照路径匹配只要以/user/开头就符合要求 # - After2031-04-13T15:14:47.43308:00[Asia/Shanghai] #要求访问时间在这个之后- Before2031-04-13T15:14:47.43308:00[Asia/Shanghai] #要求访问时间在这个之后 此时访问成功  给所有进入userservice的请求添加一个请求头 实现方式:在gateway中修改application.yml文件给userservice的路由添加过滤器: spring:     cloud:         gateway:             routes: #网关路由配置                 - id: user-service                 uri: lb: //userservice、                 predicates:                     - Path/user/**                 filters: #过滤器                 - AddRequestHeaderTruth,Itcast is freaking awesome! #添加请求头 这里我在user-service里加上  filters:             - AddRequestHeaderTruth,Itcast is freaking awesome! #添加请求头 server:port: 10010 #网关端口 spring:application:name: gateway #服务名称cloud :nacos:server-addr: localhost:8848 #nacos地址gateway:routes: #网关路由配置- id: user-service #路由id自定义只要唯一即可# uri: http://127.0.0.1:8081 #路由的目标地址 http就是固定地址uri: lb://userservice #路由的目标地址lb就是负载均衡后面跟服务名称predicates: #路由断言也就是判断请求是否符合路由规则的条件- Path/user/** #这个是按照路径匹配只要以/user/开头就符合要求filters:- AddRequestHeaderTruth,Itcast is freaking awesome! #添加请求头- id: order-service #路由id自定义只要唯一即可uri: lb://orderservice #路由的目标地址lb就是负载均衡后面跟服务名称predicates: #路由断言也就是判断请求是否符合路由规则的条件- Path/order/** #这个是按照路径匹配只要以/user/开头就符合要求 # - After2031-04-13T15:14:47.43308:00[Asia/Shanghai] #要求访问时间在这个之后- Before2031-04-13T15:14:47.43308:00[Asia/Shanghai] #要求访问时间在这个之后在user-service的controller里修改一下 GetMapping(/{id}) public User queryById(PathVariable(id) Long id,RequestHeader(value Truth,required false) String truth) {System.out.println(truth: truth);return userService.queryById(id); }package cn.itcast.user.web;import cn.itcast.user.config.PatternProperties; import cn.itcast.user.pojo.User; import cn.itcast.user.service.UserService; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.cloud.context.config.annotation.RefreshScope; import org.springframework.web.bind.annotation.*;import java.text.DateFormat; import java.time.LocalDateTime; import java.time.format.DateTimeFormatter;Slf4j RestController RequestMapping(/user) //RefreshScope public class UserController {Autowiredprivate UserService userService;// Value(${pattern.dateformat}) // //注解读取该配置 // private String dateformat;Autowiredprivate PatternProperties properties;//注入新的java类GetMapping(prop)public PatternProperties properties(){return properties;}GetMapping(now)public String now(){return LocalDateTime.now().format(DateTimeFormatter.ofPattern(properties.getDateformat()));//通过该配置改变时间格式}/*** 路径 /user/110** param id 用户id* return 用户*/GetMapping(/{id}) //请求头 变量名为Truth 可以不传 public User queryById(PathVariable(id) Long id,RequestHeader(value Truth,required false) String truth) {System.out.println(truth: truth);return userService.queryById(id);} }在网页通过端口10010请求user的服务 会看到这句请求头被打印出来证明成功 给所有服务加请求头 default-filters: #默认过滤器会对所有的路由请求都生效 - AddRequestHeaderTruth,Itcast is freakina awesome! #添加情求头 这里我把上次user-service的请求头注释掉看看能不能通过默认过滤器让所有服务默认带上请求头  server:port: 10010 #网关端口 spring:application:name: gateway #服务名称cloud :nacos:server-addr: localhost:8848 #nacos地址gateway:routes: #网关路由配置- id: user-service #路由id自定义只要唯一即可# uri: http://127.0.0.1:8081 #路由的目标地址 http就是固定地址uri: lb://userservice #路由的目标地址lb就是负载均衡后面跟服务名称predicates: #路由断言也就是判断请求是否符合路由规则的条件- Path/user/** #这个是按照路径匹配只要以/user/开头就符合要求 # filters: # - AddRequestHeaderTruth,Itcast is freaking awesome! #添加请求头- id: order-service #路由id自定义只要唯一即可uri: lb://orderservice #路由的目标地址lb就是负载均衡后面跟服务名称predicates: #路由断言也就是判断请求是否符合路由规则的条件- Path/order/** #这个是按照路径匹配只要以/user/开头就符合要求 # - After2031-04-13T15:14:47.43308:00[Asia/Shanghai] #要求访问时间在这个之后- Before2031-04-13T15:14:47.43308:00[Asia/Shanghai] #要求访问时间在这个之后default-filters: #默认过滤器会对所有的路由请求都生效- AddRequestHeaderTruth,Itcast is freakina awesome! #添加情求头 访问任意一个服务都能带上请求头。但要注意我没有在order-service里打印出来所以是看不到的 全局过滤器GlobalFilter 全局过滤器的作用也是处理一切进入网关的请求和微服务响应与GatewayFilter的作用一样。 区别在于GatewayFilter通过配置定义处理逻辑是固定的。而GlobalFilter的逻辑需要自己写代码实现。 定义方式是实现GlobalFilter接口。 举例 定义全局过滤器拦截请求判断请求的参数是否满足下面条件:         1、参数中是否有authorization,         2、authorization参数值是否为admin 如果同时满足则放行否则拦截 创建一个新类AuthorizeFilter package cn.itcast.gateway;import org.springframework.cloud.gateway.filter.GatewayFilterChain; import org.springframework.cloud.gateway.filter.GlobalFilter; import org.springframework.core.Ordered; import org.springframework.core.annotation.Order; import org.springframework.http.HttpStatus; import org.springframework.http.server.reactive.ServerHttpRequest; import org.springframework.stereotype.Component; import org.springframework.util.MultiValueMap; import org.springframework.web.server.ServerWebExchange; import reactor.core.publisher.Mono;//Order(-1)//这是通过注解来实现的执行顺序越小优先级越高 Component public class AuthorizeFilter implements GlobalFilter, Ordered {Overridepublic MonoVoid filter(ServerWebExchange exchange, GatewayFilterChain chain) {// 1.获取请求参数ServerHttpRequest request exchange.getRequest();MultiValueMapString,String params request.getQueryParams();//2.获取参数中的authorization参数String auth params.getFirst( authorization);//3.判断参数值是否等于adminif ( admin.equals(auth)) {//4.是放行 这步的操作是直接运行下一个过滤器的filter相当于直接通过此时的过滤器return chain.filter(exchange);}//5.否拦截// 5.1.设置状态码 未认证exchange.getResponse().setStatusCode(HttpStatus.UNAUTHORIZED) ;//5.2.拦截请求 这步的操作是把此时的响应结束return exchange.getResponse().setComplete();}//这是通过继承Ordered来实现的执行顺序Overridepublic int getOrder() {return -1;} }直接访问报401 加入参数 访问成功 过滤器执行顺序 1、每一个过滤器都必须指定一个int类型的order值order值越小优先级越高执行顺序越靠前 2、GlobalFilter通过实现Ordered接口或者添加Order注解来指定order值由我们自己指定 3、路由过滤器和defaultFilter的order由Spring指定默认是按照声明顺序从1递增。 4、当过滤器的order值一样时会按照defaultFilter 路由过滤器GlobalFilter的顺序执行。 跨域问题处理 跨域:域名不一致就是跨域主要包括:         1、域名不同: www.taobao.com和www.taobao.org和www.jd.com和miaosha.jd.com         2、域名相同端口不同:localhost:8080和localhost8081 跨域问题浏览器禁止请求的发起者与服务端发生跨域ajax请求请求被浏览器拦截的问题 解决方案CORS 网关处理跨域采用的同样是CORS方案并且只需要简单配置即可实现:  spring:cloud:gateway:globalcors: # 全局的跨域处理add-to-simple-url-handler-mapping: true # 解决options请求被拦截问题corsConfigurations:[/**]:allowedOrigins: # 允许哪些网站的跨域请求- http://localhost:8090- http://www.leyou.comallowedMethods: # 允许的跨域ajax的请求方式- GET- POST- DELETE- PUT- OPTIONSallowedHeaders: * # 允许在请求中携带的头信息allowCredentials: true # 是否允许携带cookiemaxAge: 360000 # 这次跨域检测的有效期 通过网址通过ip运行前端的html在F12中会出现报错 server:port: 10010 #网关端口 spring:application:name: gateway #服务名称cloud :nacos:server-addr: localhost:8848 #nacos地址gateway:routes: #网关路由配置- id: user-service #路由id自定义只要唯一即可# uri: http://127.0.0.1:8081 #路由的目标地址 http就是固定地址uri: lb://userservice #路由的目标地址lb就是负载均衡后面跟服务名称predicates: #路由断言也就是判断请求是否符合路由规则的条件- Path/user/** #这个是按照路径匹配只要以/user/开头就符合要求 # filters: # - AddRequestHeaderTruth,Itcast is freaking awesome! #添加请求头- id: order-service #路由id自定义只要唯一即可uri: lb://orderservice #路由的目标地址lb就是负载均衡后面跟服务名称predicates: #路由断言也就是判断请求是否符合路由规则的条件- Path/order/** #这个是按照路径匹配只要以/user/开头就符合要求 # - After2031-04-13T15:14:47.43308:00[Asia/Shanghai] #要求访问时间在这个之后- Before2031-04-13T15:14:47.43308:00[Asia/Shanghai] #要求访问时间在这个之后default-filters: #默认过滤器会对所有的路由请求都生效- AddRequestHeaderTruth,Itcast is freakina awesome! #添加情求头globalcors: # 全局的跨域处理add-to-simple-url-handler-mapping: true # 解决options请求被拦截问题corsConfigurations:[/**]:allowedOrigins: # 允许哪些网站的跨域请求- http://localhost:8090- http://www.leyou.comallowedMethods: # 允许的跨域ajax的请求方式- GET- POST- DELETE- PUT- OPTIONSallowedHeaders: * # 允许在请求中携带的头信息allowCredentials: true # 是否允许携带cookiemaxAge: 360000 # 这次跨域检测的有效期 再次启动该前端在F12中可以请求到数据 代码文件点击下载https://pan.baidu.com/s/10vVSJiccKxAirQYDgzZu-Q?pwd8e5w 上一篇Feign的配置和使用 下一篇Docker的安装和使用
http://www.dnsts.com.cn/news/21638.html

相关文章:

  • 网站建设的书籍wordpress 404跳转首页
  • 网站推广怎么做网站需求分析与设计方案
  • 微信恢复官方网站新网站如何做sem
  • wordpress音乐站自做网站视频
  • 一站式服务中心江苏平台网站建设价位
  • 长沙有什么做试卷的网站海南网纹瓜
  • 怎么做淘宝网站企业网站建设介绍
  • 做都是正品的网站很难吗关于网站开发的论文
  • wordpress怎么更换站点鸣蝉智能建站
  • 手机网站怎么优化关键词网站设计书籍
  • 杨浦专业做网站搜索引擎营销是目前最主要的网站推广营销
  • 新学校网站建设成果我想做个网站怎么弄
  • 怎么做网站免费的刷赞wordpress 2.0 下载地址
  • 视频网站 如何做seo电子商务就业方向及就业前景
  • 网站建设维护 天博网络网站调用优酷视频去除广告
  • flash互动网站开发手机app开发工具下载
  • 建站工具箱接线图描述网站建设的具体流程
  • 电子商务网站建设论文一个商城网站开发要多少时间
  • 手机制作网站开发wordpress设置邮件
  • 有域名有空间如何做网站东莞it外包
  • 龙岗网站制作效果网站建设教学点
  • 佛山信息技术网站开发广州市萝岗区做网站设计服务
  • 怎样做货源网站郑州众诚建设监理有限公司网站
  • 昌平区网站建设公司建设厅网站关于建筑资质合并
  • 市场营销策略分析百度推广优化是什么意思
  • 九江网站制作受欢迎的昆明网站推广
  • 做销售用什么网站餐饮品牌设计哪个公司最好
  • 温州公司网站开发商城建站服务
  • 做影视网站侵权吗wordpress 目录 导航站
  • 论坛内网站怎么建设年轻的儿媳