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

贵阳做网站公司杭州做网站外包公司哪家好

贵阳做网站公司,杭州做网站外包公司哪家好,阅读网页设计,做哪个网站最简单Spring Boot实现跨域的5种方式 为什么会出现跨域问题什么是跨域非同源限制java后端实现CORS跨域请求的方式返回新的CorsFilter(全局跨域)重写WebMvcConfigurer(全局跨域)使用注解(局部跨域)手动设置响应头(局部跨域)使用自定义filter实现跨域 为什么会出现跨域问题 出于浏览器… Spring Boot实现跨域的5种方式 为什么会出现跨域问题什么是跨域非同源限制java后端实现CORS跨域请求的方式返回新的CorsFilter(全局跨域)重写WebMvcConfigurer(全局跨域)使用注解(局部跨域)手动设置响应头(局部跨域)使用自定义filter实现跨域 为什么会出现跨域问题 出于浏览器的同源策略限制。同源策略(Sameoriginpolicy)是一种约定它是浏览器最核心也最基本的安全功能如果缺少了同源策略则浏览器的正常功能可能都会受到影响。可以说Web是构建在同源策略基础之上的浏览器只是针对同源策略的一种实现。 同源策略会阻止一个域的javascript脚本和另外一个域的内容进行交互。所谓同源(即指在同一个域)就是两个页面具有相同的协议(protocol)主机(host)和端口号(port) 什么是跨域 当一个请求url的协议、域名、端口三者之间任意一个与当前页面url不同即为跨域 当前页面url被请求页面url是否跨域原因http://www.test.com/http://www.test.com/index.html否同源(协议、域名、端口号相同)http://www.test.com/https:/www.test.com/index.html跨域协议不同 (http/https)http:/www.test.com/http.//www.baidu.com/跨域主域名不同 (test/baidu)http:/lwww.test.com/http.//blogtest.com/跨域子域名不同 (www/bloq)http.//www.test.com.8080/http.//wwwtest.com.7001/跨域端口号不同 (8080/7001) 非同源限制 1.无法读取非同源网页的Cookie、LocalStorage和IndexedDB 2.无法接触非同源网页的DOM 3.无法向非同源地址发送AJAX请求 java后端实现CORS跨域请求的方式 对于CORS的跨域请求主要有以下几种方式可供选择 1.返回新的CorsFilter 2.重写WebMvcConfigurer 3.使用注解CrossOrigin 4.手动设置响应头(HttpServletResponse) 5.自定义web filter实现跨域 注意 CorsFilter / WebMvcConfigurer / CrossOrigin 需要SpringMVC 4.2以上版本才支持对应SpringBoot 1.3版本以上上面前两种方式属于全局CORS配置后两种属于局部CORS配置。如果使用了局部跨域是会覆盖全局跨域的规则所以可以通过CrossOrigin注解来进行细粒度更高的跨域资源控制。其实无论那种方案最终目的都是修改响应头响应头中添加浏览器所要求的数据进而实现跨域。 返回新的CorsFilter(全局跨域) 在任意配置类返回一个新的 CorsFilter Bean并添加映射路径和具体的CORS配置路径。 package com.mry.rocketmqdemo.config;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 GlobalCorsConfig {Beanpublic CorsFilter corsFilter(){//1.添加 CORS配置信息CorsConfiguration config new CorsConfiguration();//放行那些原始域config.addAllowedOrigin(*);//是否发送 Cookieconfig.setAllowCredentials(true);//放行那些请求方式config.addAllowedMethod(*);//放行那些原始请求头部信息config.addAllowedHeader(*);//暴露那些头部信息config.addExposedHeader(*);//2.添加映射路径UrlBasedCorsConfigurationSource corsConfigurationSource new UrlBasedCorsConfigurationSource();corsConfigurationSource.registerCorsConfiguration(/**, config);//3.返回新的CorsFilterreturn new CorsFilter(corsConfigurationSource);}} 重写WebMvcConfigurer(全局跨域) package com.mry.rocketmqdemo.config;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 {Overridepublic void addCorsMappings(CorsRegistry registry){registry.addMapping(/**)//是否发送Cookie.allowCredentials(true)//放行那些原始域.allowedOrigins(*).allowedMethods(new String[]{GET, POST, PUT, DELETE}).allowedHeaders(*).exposedHeaders(*);}} 使用注解(局部跨域) 在控制器(类)上使用注解CrossOrigin表示该类的所有方法允许跨域。 package com.mry.rocketmqdemo.test;import org.springframework.web.bind.annotation.CrossOrigin; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController;RestController CrossOrigin(origins *) public class HelloController {RequestMapping(/hello)public String hello(){return hello world;}} 在方法上使用注解CrossOrigin package com.mry.rocketmqdemo.test; import org.springframework.web.bind.annotation.CrossOrigin; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController;RestController public class HelloController {RequestMapping(/hello)CrossOrigin(origins *)// CrossOrigin(value http://localhost:8081) //指定具体IP允许跨域public String hello(){return hello world;}}手动设置响应头(局部跨域) 使用HttpServletResponse对象添加响应头(Access-Control-Allow-Origin)来授权原始域这里Origin的值也可以设置为*表示全部放行。 RequestMapping(/index) public String index(HttpServletResponse response){response.addHeader(Access-Control-Allow-Origin, *);return index; }使用自定义filter实现跨域 首先编写一个过滤可以起名字为MyCorsFilter.java package com.mry.rocketmqdemo.config;import org.springframework.stereotype.Component; import javax.servlet.*; import javax.servlet.http.HttpServletResponse; import java.io.IOException;Component public class MyCorsFilter implements Filter {Overridepublic void init(FilterConfig filterConfig) throws ServletException {}Overridepublic void doFilter(ServletRequest rep, ServletResponse res, FilterChain filterChain) throws IOException, ServletException {HttpServletResponse response (HttpServletResponse) res;response.setHeader(Access-Control-Allow-Origin, *);response.setHeader(Access-Control-Allow-Methods, POST, GET, OPTIONS, DELETE);response.setHeader(Access-Control-Max-Age, 3600);response.setHeader(Access-Control-Allow-Headers, x-requested-with, content-type);filterChain.doFilter(rep, res);}Overridepublic void destroy() {} } 在web.xml中配置这个过滤器使其生效 !-- 跨域访问 START-- filterfilter-nameCorsFilter/filter-namefilter-classcom.mesnac.aop.MyCorsFilter/filter-class /filter filter-mappingfilter-nameCorsFilter/filter-nameurl-pattern/*/url-pattern /filter-mapping !-- 跨域访问 END --
http://www.hkea.cn/news/14375138/

相关文章:

  • 有域名有服务器怎么做网站响应式网站开发现状
  • 电影网站开发开题报告wordpress 兼职
  • 怎样克隆别人的网站一个人能建设一个公司网站吗
  • 网站 文件 上传wordpress 写文章 插件
  • 做ppt的动图下载哪些网站seo优化技术
  • 濮阳网站建设知名公司排名威联通231p做网站
  • 牙科网站模板ppt模板大全app
  • 适合个人做的网站有哪些东西吗做网站的时候网站的第一个字母怎么在网站标题前面显示 比如谷歌g一样
  • 桂林广告公司网站建设wordpress写文章500
  • 沈阳网站制作建设陕西网站制
  • 网站改版的影响互联网金融型网站开发
  • 做教务网站的需求分析建站公司佛山
  • 广东建设工程备案网站企业网站建设多长时间
  • 网站标题改不了北京网约车
  • 网页设计网站源代码售后服务网点建设是指网站
  • 免费网站免费在线观看目前最好的找工作平台
  • 沈阳方正建设监理网站平台公司是干什么的
  • 房产网站代运营太原网建科技有限公司
  • 网站怎么宣传如何做社交网站
  • 国家企业信用公示系统官方网站中国建设银行网站缺点
  • 资讯网站排版网络舆情
  • 国外做免费网站的做网站一定要用ps吗
  • 贵阳招聘网站建设本地搭载wordpress
  • 亚洲建行网站打不开wordpress 主题演示文件 导入
  • 自己做网站外包平邑做网站的
  • 服务器怎么发布网站wordpress设置前台投稿
  • 食品企业网站建设策划方案书天津港电子商务网
  • 个人网站免费申请注册在网站加上一个模块怎么做
  • 选择网站开发公司的标准济南网站建设推荐企优互联不错
  • 郴州网站建设ku0735京京商城