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

苏州区建设局网站中国四大互联网巨头

苏州区建设局网站,中国四大互联网巨头,网站开发慕枫,软件开发平台是什么文章目录 1. 前置知识2. 原理和解决方案总结2.1. 跨域不通过原理流程图2.2. 实现原理#xff1a;添加以下http响应头2.3. 四种跨域实现方式及优先级#xff08;从高到低#xff09; 3. 具体实现代码3.1. 跨域全局配置方式-Filter(全适用)3.2. 跨域全局配置方式-SpringMvc3.3… 文章目录 1. 前置知识2. 原理和解决方案总结2.1. 跨域不通过原理流程图2.2. 实现原理添加以下http响应头2.3. 四种跨域实现方式及优先级从高到低 3. 具体实现代码3.1. 跨域全局配置方式-Filter(全适用)3.2. 跨域全局配置方式-SpringMvc3.3. 跨域单个配置方式-WebServlet3.4. 跨域单个配置方式-SpringMvc 4.非java实现方式4.1. nginx代理 9. 参考文章 1. 前置知识 【尚硅谷】【视频】【B站】禹神一小时彻底搞懂跨域解决方案【尚硅谷】【笔记】【CSDN】禹神彻底搞懂前端跨域解决方案 2. 原理和解决方案总结 2.1. 跨域不通过原理流程图 2.2. 实现原理添加以下http响应头 序号响应头含义1Access-Control-Allow-Origin允许的源2Access-Control-Allow-Methods允许的方法3Access-Control-Allow-Headers允许的自定义头4Access-Control-Max-Age预检请求的结果缓存时间可选 2.3. 四种跨域实现方式及优先级从高到低 跨域全局配置方式-Filter(全适用) 重写 Filter.doFilter()设置 res.setHeader(“Access-Control-Allow-Origin”, “*”) 等响应头参数跨域全局配置方式-SpringMvc 重写 WebMvcConfigurer.addCorsMappings()设置 registry.addMapping(“/**”).allowedOrigins(“*”)等响应头参数只对SpringMvc写法生效对原生Servlet不生效跨域单个配置方式-WebServlet 设置 res.addHeader(“Access-Control-Allow-Origin”, “*”) 等响应头参数跨域单个配置方式-SpringMvc 添加 CrossOrigin注解设置origins等响应头参数只对SpringMvc写法生效对原生Servlet不生效 3. 具体实现代码 gitee源码 3.1. 跨域全局配置方式-Filter(全适用) 重写Filter.doFilter()设置 res.setHeader(Access-Control-Allow-Origin, *) 等响应头参数 /** 1.跨域全局配置方式-Filter(全适用) */ Configuration public class CorsFilter implements Filter {Overridepublic void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {HttpServletResponse res (HttpServletResponse) response;res.setHeader(Access-Control-Allow-Origin, req.getHeader(Origin)); //【跨域配置】[必需] 允许请求源 默认值 无配置*允许所有。// 如果是复杂请求的预检请求判断逻辑同SpringMvc设置以下响应头且没必要执行其它过滤器链 chain.doFilter(request, response);if (req.getMethod().equalsIgnoreCase(OPTIONS) !ObjUtil.hasNull(req.getHeader(Origin), req.getHeader(Access-Control-Request-Method))) {res.setHeader(Access-Control-Allow-Methods, req.getHeader(Access-Control-Request-Method)); //【跨域配置】[有复杂请求方法时必需] 允许请求方法默认值 无配置 *允许所有res.setHeader(Access-Control-Allow-Headers, req.getHeader(Access-Control-Request-Headers)); //【跨域配置】[有复杂请求头时必需] 允许请求头 默认值 无配置 *允许所有res.setHeader(Access-Control-Max-Age, 5); //【跨域配置】[非必需] 预检缓存时长 默认值 依赖客户端。EDGE浏览器默认值为3秒。【注意浏览器不要禁用缓存否则不生效】return;}} }3.2. 跨域全局配置方式-SpringMvc 重写 WebMvcConfigurer.addCorsMappings()设置 registry.addMapping(“/**”).allowedOrigins(“*”)等响应头参数只对SpringMvc写法生效对原生Servlet不生效 /** 2.跨域全局配置方式-SpringMvc */ Configuration public class WebMvcConfig implements WebMvcConfigurer {Overridepublic void addCorsMappings(CorsRegistry registry) {registry.addMapping(/**) // 适配RequestMapping。 (例如/ajax/** 开头的)// 下面几个参数不配置会使用默认值。origins 和 originPatterns取并集.allowedOrigins(*) //【跨域配置】[必需] 允许请求源默认值为*即允许所有。相当于res.setHeader(Access-Control-Allow-Origin, ).allowedOriginPatterns(*) //【跨域配置】[必需] 允许请求源默认值为*即允许所有。相当于res.setHeader(Access-Control-Allow-Origin, ).allowedMethods(*) //【跨域配置】[有复杂请求方法时必需] 允许请求方法默认值为GET,POST,HEAD。相当于res.setHeader(Access-Control-Allow-Methods, ).allowedHeaders(*) //【跨域配置】[有复杂请求头时必需] 允许请求头 默认值为*即允许所有。相当于res.setHeader(Access-Control-Allow-Headers, ).maxAge(1800); //【跨域配置】[非必需] 预检缓存时长默认值 1800秒。小于等于0时缓存无效【注意浏览器不要禁用缓存否则不生效】。相当于res.setHeader(Access-Control-Max-Age, )} }3.3. 跨域单个配置方式-WebServlet 设置 res.addHeader(“Access-Control-Allow-Origin”, “*”) 等响应头参数 /** 3.跨域单个配置方式-WebServlet */ Slf4j WebServlet(name ajax, value {/ajax/WebServlet, /ajax/WebServlet/}) public class AjaxWebServlet extends HttpServlet {Overrideprotected void service(HttpServletRequest req, HttpServletResponse res) throws IOException {log.warn(method【{}】, name【{}】, header.origin【{}】, Access-Control-Request-Method【{}】, Access-Control-Request-Headers【{}】, req.getMethod(), req.getParameter(name), req.getHeader(Origin), req.getHeader(Access-Control-Request-Method), req.getHeader(Access-Control-Request-Headers));res.setHeader(Access-Control-Allow-Origin, *); //【跨域配置】[必需] 允许请求源 默认值 无配置*允许所有。res.setHeader(Access-Control-Allow-Methods, *); //【跨域配置】[有复杂请求方法时必需] 允许请求方法默认值 无配置 *允许所有res.setHeader(Access-Control-Allow-Headers, *); //【跨域配置】[有复杂请求头时必需] 允许请求头 默认值 无配置 *允许所有res.setHeader(Access-Control-Max-Age, 1800); //【跨域配置】[非必需] 预检缓存时长 默认值 依赖客户端。EDGE浏览器默认值为3秒。【注意浏览器不要禁用缓存否则不生效】res.getWriter().write(DateUtil.now() req.getMethod());} }3.4. 跨域单个配置方式-SpringMvc 添加 CrossOrigin注解设置origins等响应头参数只对SpringMvc写法生效对原生Servlet不生效 /* 4.跨域单个配置方式-SpringMvc */ Slf4j RestController RequestMapping(/ajax) public class AjaxController {CrossOrigin(// origins 和 originPatterns取并集。【注意】此处配置与下面的res.setHeader()功能相同优先级较低。二选其一即可origins {*}, //【跨域配置】[必需] 允许请求源 默认值为*即允许所有。相当于res.setHeader(Access-Control-Allow-Origin, )originPatterns {*}, //【跨域配置】[必需] 允许请求源 默认值为*即允许所有。相当于res.setHeader(Access-Control-Allow-Origin, )methods {}, //【跨域配置】[有复杂请求方法时必需] 允许请求方法默认值为优先以RequestMapping的method属性为准如果没有指定则默认为GET,POST,HEAD。相当于res.setHeader(Access-Control-Allow-Methods, )allowedHeaders {*}, //【跨域配置】[有复杂请求头时必需] 允许请求头 默认值为*即允许所有。相当于res.setHeader(Access-Control-Allow-Headers, )maxAge 1800 //【跨域配置】[非必需] 预检缓存时长默认值 1800秒。小于等于0时缓存无效【注意浏览器不要禁用缓存否则不生效】 。相当于res.setHeader(Access-Control-Max-Age, ))RequestMapping(value /CrossOrigin, method {RequestMethod.GET, RequestMethod.PUT})SneakyThrowsvoid ajax(HttpServletRequest req, HttpServletResponse res) {log.warn(method【{}】, name【{}】, header.origin【{}】, Access-Control-Request-Method【{}】, Access-Control-Request-Headers【{}】, req.getMethod(), req.getParameter(name), req.getHeader(Origin), req.getHeader(Access-Control-Request-Method), req.getHeader(Access-Control-Request-Headers));res.getWriter().write(DateUtil.now() req.getMethod());} }4.非java实现方式 4.1. nginx代理 优点不用侵入java代码 配置nginx反向代理。在配置文件nginx.conf的http中添加一个server将AJAX请求通过nginx转发。本例中将AJAX请求发给58080端口然后转发给8080端口 server {listen 58080;server_name localhost;location / {proxy_pass http://localhost:8080;# 增加响应头add_header Access-Control-Allow-Origin *; # 【跨域配置】[必需] 允许请求源 默认值 无配置*允许所有。if ($request_method OPTIONS) { # 如果是复杂请求的预检请求参考SpringMvc最好同时判断请求头Origin、Access-Control-Request-Method都不为null略设置以下响应头且没必要透传直接返回add_header Access-Control-Allow-Origin *; # 【跨域配置】[必需] 允许请求源 默认值 无配置*允许所有。add_header Access-Control-Allow-Methods *; # 【跨域配置】[有复杂请求方法时必需] 允许请求方法默认值 无配置 *允许所有add_header Access-Control-Allow-Headers *; # 【跨域配置】[有复杂请求头时必需] 允许请求头 默认值 无配置 *允许所有add_header Access-Control-Max-Age 5; # 【跨域配置】[非必需] 预检缓存时长 默认值 依赖客户端。EDGE浏览器默认值为3秒。【注意浏览器不要禁用缓存否则不生效】return 204;}} }9. 参考文章 CrossOrigin详细参数说明SpringBoot处理跨域请求的四种方法
http://www.sczhlp.com/news/191461/

相关文章:

  • 网站怎么做app网站源码 源码论坛 源码之家 免费源码 商业源码 源码下载
  • 做百度移动网站点击广州专业网站制作公司
  • wordpress静态缓存北京和隆优化怎么样
  • 建设局网站打不开是什么原因网页设计作业简单
  • php做网站知乎基于php技术的网站开发
  • 青岛网站建设找网店营销模式
  • 赋能智慧农业:ISUP协议视频平台EasyCVR智慧农业视频远程监控管理方案
  • 中电金信 :源启数据建模平台:自定义功能上线,实现高效模型管理
  • 国产软件项目管理革命:Gitee PPM如何重塑开发效率
  • 网关本质论
  • 用最通俗易懂的方式解读以太坊的dAI团队和ERC-8004标准
  • 网站可做哪些服务威海市做网站的
  • 免费网站后台模板下载郑州优化网站公司有哪些
  • 公司网站制作模板餐饮服务怎么做网络推广
  • 网站开发需要什么人上海网站优化公司
  • 浅析网站域名在搜索引擎排名中的作用有站点地图的网站
  • 建网站是怎么造成的长沙房地产
  • 本地合肥网站建设公司官网登录入口
  • 可以用wpf做网站吗摄影网站建站
  • 专门做美食的视频网站龙岗建设网站
  • 建设网站 请示 报告英文网站建设电话
  • 网站建设服务开发一个网站如何进行推广宣传
  • 做网站 需要什么商标asp.net 网站安全 检测
  • 纯静态网站 维护网页设计培训班哪里好
  • 网站建设收费分几次用py做网站
  • 怎么网站开发网站建设发展方向有哪些
  • 生物制药公司网站建设如何分步骤开展seo工作
  • 网站建设方案书例子wordpress 开发语言
  • 集成开发工具 IDEA下载
  • 10.12一周观察