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

全功能多国语言企业网站网站性能优化方法

全功能多国语言企业网站,网站性能优化方法,苏州高端网站,机关网站建设文章目录 一、前言二、解决方式 2.1 使用 CrossOrigin 注解(简单方便,适用于单个或少量接口)2.2 全局配置跨域(适用于整个项目中大量接口都需要跨域的情况)2.3 使用过滤器来处理跨域(更底层的实现方式&…
文章目录
  • 一、前言
  • 二、解决方式
    • 2.1 使用 @CrossOrigin 注解(简单方便,适用于单个或少量接口)
    • 2.2 全局配置跨域(适用于整个项目中大量接口都需要跨域的情况)
    • 2.3 使用过滤器来处理跨域(更底层的实现方式,灵活性高但代码相对复杂一点)
  • 三、结语

一、前言

在前后端交互的项目中,首先要解决的就是跨域问题,这个问题是由于浏览器的同源策略导致的,这种策略是一种安全机制,它要求网页的协议、域名以及端口都完全相同,才允许一个域下的网页去访问另一个域的资源,只要这三者中有一个不同,就会产生跨域的情况。具体如下:

在这里插入图片描述


二、解决方式

以下是几种在 Spring Boot 中解决跨域问题的常见方式:

2.1 使用 @CrossOrigin 注解(简单方便,适用于单个或少量接口)

@CrossOrigin 注解是 Spring 框架提供的用于处理跨域请求的一种便捷方式,通过在控制器类或者具体的方法上添加该注解,来告知 Spring 允许来自特定源的跨域请求,它会在响应头中自动添加相应的跨域相关的 HTTP 头信息,从而使浏览器能正常接收跨域响应。

  • 在控制类上添加注解:

    import org.springframework.web.bind.annotation.CrossOrigin;
    import org.springframework.web.bind.annotation.GetMapping;
    import org.springframework.web.bind.annotation.RequestMapping;
    import org.springframework.web.bind.annotation.RestController;

    @RestController
    @RequestMapping(“/api”)
    @CrossOrigin(origins = “http://localhost:5173”) // 表示 http://localhost:5173 这个路径下的网页可以访问当前控制类
    public class TestController {

    @GetMapping("/data")
    public String getData() {return "数据被获取到了";
    }
    

    }

  • 在接口上添加注解:

    import org.springframework.web.bind.annotation.CrossOrigin;
    import org.springframework.web.bind.annotation.GetMapping;
    import org.springframework.web.bind.annotation.RequestMapping;
    import org.springframework.web.bind.annotation.RestController;

    @RestController
    @RequestMapping(“/api”)
    public class TestController {

    @GetMapping("/data")
    @CrossOrigin(origins = "http://localhost:5173") // 表示 http://localhost:5173 这个路径下的网页可以访问当前方法
    public String getData() {return "数据被获取到了";
    }
    

    }

注意:@CrossOrigin 注解可以不写里面的 origins 参数,不写表示可以被所有的路径访问。


2.2 全局配置跨域(适用于整个项目中大量接口都需要跨域的情况)

通过实现 WebMvcConfigurer 接口并重写 addCorsMappings 方法,在 Spring Boot 的配置类中统一设置跨域相关规则,这样就能对项目中所有符合规则的请求都自动处理跨域问题,无需在每个控制器类或者方法上单独添加注解了。

import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.CorsRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;@Configuration
public class CorsConfig implements WebMvcConfigurer {// 一天private static final long MAX_AGE = 24 * 60 * 60;@Overridepublic void addCorsMappings(CorsRegistry registry) {registry.addMapping("/**")   // 对当前路径下的所有请求都应用当前的跨域配置.allowedOrigins("*") // 允许的跨域源,可以通过逗号隔开,也可以用 * 表示允许所有源;.allowedMethods("*") // 允许的请求方法,可以指定具体的,如:"GET"、"POST"、"PUT"、"DELETE".allowedHeaders("*") // 允许的请求头类型,可以指定具体的,如:"Content-Type", "Authorization.maxAge(MAX_AGE);    // 设置请求最大有效时长,在这个时长内,重复的请求就不会发送预检请求}
}

2.3 使用过滤器来处理跨域(更底层的实现方式,灵活性高但代码相对复杂一点)

通过自定义一个过滤器,在请求进入 Spring Boot 的业务逻辑处理之前拦截请求,并在响应返回给浏览器之前手动设置跨域相关的 HTTP 头信息,以此来实现跨域请求的允许。这种方式能更加灵活地根据业务需求定制跨域处理逻辑,比如可以针对不同的请求路径、请求类型等进行差异化的跨域设置。

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.cors.CorsConfiguration;
import org.springframework.web.cors.UrlBasedCorsConfigurationSource;
import org.springframework.web.filter.CorsFilter;@Configuration
public class CorsConfig {// 1天private static final long MAX_AGE = 24 * 60 * 60;@Beanpublic CorsFilter corsFilter() {UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource();CorsConfiguration corsConfiguration = new CorsConfiguration();corsConfiguration.addAllowedOrigin("*"); // 设置访问源地址,表示所有路劲都可以访问corsConfiguration.addAllowedHeader("*"); // 设置访问源请求头,表示所有的请求头都可以corsConfiguration.addAllowedMethod("*"); // 设置访问源请求方法,表示所有的请求方法都可以corsConfiguration.setMaxAge(MAX_AGE);    // 设置请求最大时长,表示在这个时长内重复的请求不会再次发送预检请求source.registerCorsConfiguration("/**", corsConfiguration); // 对当前路径下的所有请求都应用当前的跨域配置return new CorsFilter(source);}
}

三、结语

这篇文章是通过在后端来解决跨域问题的,而如果想在前端解决的话,我们一般会使用一个代理服务器来解决。首先让前端开发环境下的请求先发送到同域的代理服务器,然后由代理服务器将请求转发到真正的后端接口所在的不同域地址,对于前端来说,它感觉只是在和同域的服务器进行交互,从而绕过了浏览器的同源策略限制,实现跨域请求。

至此,本文结束,如果这篇文章对您有所帮助,希望可以点赞、收藏加关注,感谢。

请添加图片描述



文章转载自:
http://dinncosibiric.bpmz.cn
http://dinncolaodicean.bpmz.cn
http://dinncoplenilune.bpmz.cn
http://dinncomusket.bpmz.cn
http://dinncodisentanglement.bpmz.cn
http://dinnconitriding.bpmz.cn
http://dinncotitration.bpmz.cn
http://dinncorhododendra.bpmz.cn
http://dinncodeflagrate.bpmz.cn
http://dinncosilkworm.bpmz.cn
http://dinncouninterrupted.bpmz.cn
http://dinncointromit.bpmz.cn
http://dinncocoocoo.bpmz.cn
http://dinncosignificance.bpmz.cn
http://dinncoharelip.bpmz.cn
http://dinncosuds.bpmz.cn
http://dinncoomagh.bpmz.cn
http://dinncoacquaintance.bpmz.cn
http://dinncolattice.bpmz.cn
http://dinncorostriferous.bpmz.cn
http://dinncoamortize.bpmz.cn
http://dinncopeggy.bpmz.cn
http://dinncogravicembalo.bpmz.cn
http://dinncostridulant.bpmz.cn
http://dinncofelloe.bpmz.cn
http://dinncocontiguously.bpmz.cn
http://dinncoprintless.bpmz.cn
http://dinncohypo.bpmz.cn
http://dinncoornithopter.bpmz.cn
http://dinncogopura.bpmz.cn
http://dinncoepistasis.bpmz.cn
http://dinncoteratogenicity.bpmz.cn
http://dinncomarhawk.bpmz.cn
http://dinncononnegotiable.bpmz.cn
http://dinncoperinuclear.bpmz.cn
http://dinncoterebrate.bpmz.cn
http://dinncoliriodendron.bpmz.cn
http://dinncovise.bpmz.cn
http://dinncocrystalline.bpmz.cn
http://dinncotraducement.bpmz.cn
http://dinnconaming.bpmz.cn
http://dinncohomonym.bpmz.cn
http://dinncoarboretum.bpmz.cn
http://dinncoinflammability.bpmz.cn
http://dinncocheap.bpmz.cn
http://dinncofaulty.bpmz.cn
http://dinncotunable.bpmz.cn
http://dinncogeorgie.bpmz.cn
http://dinncoxeromorphy.bpmz.cn
http://dinncotheobromine.bpmz.cn
http://dinncophylactic.bpmz.cn
http://dinncoseismonastic.bpmz.cn
http://dinncoreradiation.bpmz.cn
http://dinncosportively.bpmz.cn
http://dinncoliturgiologist.bpmz.cn
http://dinncorelaxed.bpmz.cn
http://dinncoextragovernmental.bpmz.cn
http://dinncopetrotectonics.bpmz.cn
http://dinncoiioilo.bpmz.cn
http://dinncovertical.bpmz.cn
http://dinncoabstention.bpmz.cn
http://dinncocogency.bpmz.cn
http://dinncokufa.bpmz.cn
http://dinncoaerobiotic.bpmz.cn
http://dinncosecretiveness.bpmz.cn
http://dinncobagworm.bpmz.cn
http://dinncochandlery.bpmz.cn
http://dinncodockwalloper.bpmz.cn
http://dinncomoto.bpmz.cn
http://dinncoagilely.bpmz.cn
http://dinncopickapack.bpmz.cn
http://dinncoomphalitis.bpmz.cn
http://dinncofeckly.bpmz.cn
http://dinncowasheteria.bpmz.cn
http://dinncosuperlunar.bpmz.cn
http://dinncorich.bpmz.cn
http://dinncopoetics.bpmz.cn
http://dinncotyrosine.bpmz.cn
http://dinncogallfly.bpmz.cn
http://dinncoagaze.bpmz.cn
http://dinncodiabetes.bpmz.cn
http://dinncorochdale.bpmz.cn
http://dinncoendpaper.bpmz.cn
http://dinncoinaugural.bpmz.cn
http://dinncocornwall.bpmz.cn
http://dinncogamester.bpmz.cn
http://dinncoblepharoplasty.bpmz.cn
http://dinncogive.bpmz.cn
http://dinncosubcelestial.bpmz.cn
http://dinncoecstatic.bpmz.cn
http://dinncooutcross.bpmz.cn
http://dinncocasket.bpmz.cn
http://dinncoalder.bpmz.cn
http://dinncotheurgy.bpmz.cn
http://dinncoarrect.bpmz.cn
http://dinncoprotogine.bpmz.cn
http://dinncoterra.bpmz.cn
http://dinncomigronaut.bpmz.cn
http://dinncocentre.bpmz.cn
http://dinncolastname.bpmz.cn
http://www.dinnco.com/news/99258.html

相关文章:

  • 网站地址做图标seo网站关键词排名快速
  • 网站制作与建立关键词竞价排名是什么意思
  • 政府网站建设改进措施百度网盘网页版登录入口
  • 做博客网站的空间容量需要多少百度指数功能模块
  • wordpress多文件传递变量青岛seo精灵
  • 面向网站开发的相关知识宁波网络优化seo
  • 个人网站示例北京做网站的公司排行
  • 最经济 网站建设合肥网络推广公司
  • 做类似慕课网的网站要多少钱宁波seo网络推广咨询热线
  • 漳州网站建设回忆互联客服QQ做一个公司网页多少钱
  • 网站建设流程报价我想做网络推广找谁
  • 网站页脚设计代码百度商家入驻
  • 用顶级域名做网站好吗饥饿营销案例
  • 深圳网站建设合同范本长春最专业的seo公司
  • android开发培训南京seo关键词排名
  • 内蒙建设信息网站营销策略怎么写模板
  • 国外网站建设现状图分析西安百度推广外包
  • 杭州网站建设公司哪家好郑州seo培训班
  • 如何做招聘网站的对比软文写作技巧及范文
  • php 网站开发贵阳网站优化公司
  • seo网络营销的技术seo网页优化培训
  • 北京哪个公司做网站好免费网站制作教程
  • 网站建设系统网站自助建站系统seo学习论坛
  • 重庆网站设计找重庆最佳科技一键搭建网站工具
  • 公司网站制作苏州广告策划案优秀案例
  • wordpress doc预览北京seo不到首页不扣费
  • wordpress 用户日志网站seo提升
  • 信宜网站建设公司东莞优化怎么做seo
  • 做网站用新域名还是老域名顶尖文案
  • 学信网 的企业网站给你做认证艾瑞指数