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

建一个网站的技术解决方案网站设计书的结构

建一个网站的技术解决方案,网站设计书的结构,六安网页设计,wordpress新建用户文章目录 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.w-s-a.com/news/54363/

相关文章:

  • 最火的网站开发语言福州网站建设服务商
  • 嘉兴网站制作哪里好asp网站源码免费版
  • 如何给网站配置域名百度网站统计添加网址
  • 搭建wap网站磁力引擎
  • 如何给公司网站做推广个人网站可以做社区吗
  • 网站建设为什么不给源代码大理如何做百度的网站
  • 网站代理违法吗网站备份流程
  • 免费域名查询网站wordpress wordfence
  • h5响应式网站模板制作巴南网站制作
  • 网站方案报价软文什么意思
  • 电子商城网站如何建设上海公司车牌价格
  • 丽江网站设计公司专业公司网站设计企业
  • iis怎么建设网站特色产品推广方案
  • 道路建设网站专题品牌网站建设特色大蝌蚪
  • 网站开发组合 所有组合如何做com的网站
  • 电商网站怎么做的Wordpress 报表的插件
  • 纹理网站推荐买了两台服务器可以做网站吗
  • 机关公文写作网站南宁互联网推广
  • 五指山网站开发价格免费申请网站域名
  • 帝国音乐网站怎么做数据表电脑优化软件
  • 做国外网站收款怎么收建筑人才招聘网站
  • 毕设做桌面端还是网站sns社交网站 建设
  • 建设一个网站需要注意哪些内容wordpress 进销存
  • 沈阳市建设局网站sem优化师是什么意思
  • 餐饮vi设计公司网站排名优化方法讲解
  • 无线昆明官方网站可以做书的网站
  • 信誉最好的20个网投网站凡科网站建设之后怎么删除
  • 天津网站开发技术广州网站优化公司排名
  • 养老做增减的网站医院网站怎么做优化排名
  • 企业网站的推广方法有哪些上海猎头公司前十名