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

网络文学网站开发成免费crm特色vip

网络文学网站开发,成免费crm特色vip,如何优化网站排名,地产网站建设方案JAVA | Java 解决跨域问题 文章目录JAVA | Java 解决跨域问题引言什么是跨域#xff08;CORS#xff09;什么情况会跨域解决方案前端解决方案后端解决方案具体方式一、使用Filter方式进行设置二、继承 HandlerInterceptorAdapter三、实现 WebMvcConfigurer四、使用Nginx配置五…JAVA | Java 解决跨域问题 文章目录JAVA | Java 解决跨域问题引言什么是跨域CORS什么情况会跨域解决方案前端解决方案后端解决方案具体方式一、使用Filter方式进行设置二、继承 HandlerInterceptorAdapter三、实现 WebMvcConfigurer四、使用Nginx配置五、使用 CrossOrgin 注解Spring Cloud Gateway 跨域配置引言 我们在开发过程中经常会遇到前后端分离而导致的跨域问题导致无法获取返回结果。跨域就像分离前端和后端的一道鸿沟君在这边她在那边两两不能往来. 什么是跨域CORS 跨域CORS是指不同域名之间相互访问。跨域指的是浏览器不能执行其他网站的脚本它是由浏览器的同源策略所造成的是浏览器对于JavaScript所定义的安全限制策略。 什么情况会跨域 同一协议 如http或https同一IP地址, 如127.0.0.1同一端口, 如8080 以上三个条件中有一个条件不同就会产生跨域问题。 解决方案 前端解决方案 使用JSONP方式实现跨域调用使用NodeJS服务器做为服务代理前端发起请求到NodeJS服务器 NodeJS服务器代理转发请求到后端服务器 后端解决方案 nginx反向代理解决跨域服务端设置Response Header(响应头部)的Access-Control-Allow-Origin在需要跨域访问的类和方法中设置允许跨域访问如Spring中使用CrossOrigin注解继承使用Spring Web的CorsFilter适用于Spring MVC、Spring Boot实现WebMvcConfigurer接口适用于Spring Boot 具体方式 一、使用Filter方式进行设置 使用Filter过滤器来过滤服务请求向请求端设置Response Header(响应头部)的Access-Control-Allow-Origin属性声明允许跨域访问。 WebFilter public class CorsFilter implements Filter { Overridepublic void doFilter(ServletRequest req, ServletResponse res, FilterChain chain) throws IOException, ServletException { HttpServletResponse response (HttpServletResponse) res; response.setHeader(Access-Control-Allow-Origin, *); response.setHeader(Access-Control-Allow-Methods, *); response.setHeader(Access-Control-Max-Age, 3600); response.setHeader(Access-Control-Allow-Headers, *);response.setHeader(Access-Control-Allow-Credentials, true);chain.doFilter(req, res); } }二、继承 HandlerInterceptorAdapter Component public class CrossInterceptor extends HandlerInterceptorAdapter {Overridepublic boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {response.setHeader(Access-Control-Allow-Origin, *);response.setHeader(Access-Control-Allow-Methods, GET, POST, PUT, DELETE, OPTIONS);response.setHeader(Access-Control-Max-Age, 3600);response.setHeader(Access-Control-Allow-Headers, *);response.setHeader(Access-Control-Allow-Credentials, true);return true;} }三、实现 WebMvcConfigurer Configuration SuppressWarnings(SpringJavaAutowiredFieldsWarningInspection) public class AppConfig implements WebMvcConfigurer {Overridepublic void addCorsMappings(CorsRegistry registry) {registry.addMapping(/**) // 拦截所有的请求.allowedOrigins(http://www.abc.com) // 可跨域的域名可以为 *.allowCredentials(true).allowedMethods(*) // 允许跨域的方法可以单独配置.allowedHeaders(*); // 允许跨域的请求头可以单独配置} }四、使用Nginx配置 location / {add_header Access-Control-Allow-Origin *;add_header Access-Control-Allow-Headers X-Requested-With;add_header Access-Control-Allow-Methods GET,POST,PUT,DELETE,OPTIONS;if ($request_method OPTIONS) {return 204;} }五、使用 CrossOrgin 注解 如果只是想部分接口跨域且不想使用配置来管理的话可以使用这种方式 在Controller使用 CrossOrigin RestController RequestMapping(/user) public class UserController {GetMapping(/{id})public User get(PathVariable Long id) {}DeleteMapping(/{id})public void remove(PathVariable Long id) {} }在具体接口上使用 RestController RequestMapping(/user) public class UserController {CrossOriginGetMapping(/{id})public User get(PathVariable Long id) {}DeleteMapping(/{id})public void remove(PathVariable Long id) {} }Spring Cloud Gateway 跨域配置 spring: cloud:gateway:globalcors:cors-configurations:[/**]:# 允许跨域的源(网站域名/ip)设置*为全部# 允许跨域请求里的head字段设置*为全部# 允许跨域的method 默认为GET和OPTIONS设置*为全部allow-credentials: trueallowed-origins:- http://xb.abc.com- http://sf.xx.comallowed-headers: *allowed-methods:- OPTIONS- GET- POST- DELETE- PUT- PATCHmax-age: 3600注意 通过gateway 转发的其他项目不要进行配置跨域配置 有时即使配置了也不会起作用这时你可以根据浏览器控制的错误输出来查看问题如果提示是 response 中 header 出现了重复的 Access-Control-* 请求头可以进行如下操作 import java.util.ArrayList; import org.springframework.cloud.gateway.filter.GatewayFilterChain; import org.springframework.cloud.gateway.filter.GlobalFilter; import org.springframework.cloud.gateway.filter.NettyWriteResponseFilter; import org.springframework.core.Ordered; import org.springframework.http.HttpHeaders; import org.springframework.stereotype.Component; import org.springframework.web.server.ServerWebExchange; import reactor.core.publisher.Mono;Component(corsResponseHeaderFilter) public class CorsResponseHeaderFilter implements GlobalFilter, Ordered {Overridepublic int getOrder() {// 指定此过滤器位于NettyWriteResponseFilter之后// 即待处理完响应体后接着处理响应头return NettyWriteResponseFilter.WRITE_RESPONSE_FILTER_ORDER 1;}Overridepublic MonoVoid filter(ServerWebExchange exchange, GatewayFilterChain chain) {return chain.filter(exchange).then(Mono.defer(() - {exchange.getResponse().getHeaders().entrySet().stream().filter(kv - (kv.getValue() ! null kv.getValue().size() 1)).filter(kv - (kv.getKey().equals(HttpHeaders.ACCESS_CONTROL_ALLOW_ORIGIN)|| kv.getKey().equals(HttpHeaders.ACCESS_CONTROL_ALLOW_CREDENTIALS)|| kv.getKey().equals(HttpHeaders.ACCESS_CONTROL_ALLOW_METHODS)|| kv.getKey().equals(HttpHeaders.ACCESS_CONTROL_ALLOW_HEADERS)|| kv.getKey().equals(HttpHeaders.ACCESS_CONTROL_MAX_AGE))).forEach(kv - {kv.setValue(new ArrayListString() {{add(kv.getValue().get(0));}});});return chain.filter(exchange);}));} }
http://www.huolong8.cn/news/96705/

相关文章:

  • 网站怎么编辑有没有网站做字体变形
  • 网站排名seo培训金融代理平台代理加盟
  • 网站排名软件利搜品牌网站建设相关问题
  • 网站风格分类有哪些中学生制作网站
  • 单位网站中文域名到期续费上海网站建设网站
  • 河南智能网站建设平台淘宝客代理网站怎么做
  • 云南昆明做网站搜索引擎优化的实验结果分析
  • 有没有帮别人做图片的网站赚钱室内设计找工作网站
  • 福田附近公司做网站建设多少钱网站开发端
  • 网站上的充值链接怎么做百度代理
  • 做导航网站赚钱如何设计一个自己的网页
  • 网站用什么布局淄博网站网站建设
  • 自适应网站建设需要注意什么企业展厅的设计公司价格
  • 站长工具seo综合查询权重网络基础架构
  • 美食网站html代码站长权重
  • 一般网站用什么技术做的软装设计师年终总结
  • 菏泽营销网站建设公司wordpress 主题上传后
  • 如何做php网站客户开发软件工具
  • 康桥网站建设seo超级外链工具免费
  • wordpress 不能查看站点美工做图哪个网站好
  • 给别人做网站挣钱盐城网站开发包括哪些
  • 福建巢网站建设响应式网站模板分享
  • 优质国外网站正邦设计院
  • 北碚集团网站建设创建官方网站
  • 网站开发常用颜色手机上上建设网站
  • 制作图网站有哪些内容数据库与网站建设
  • 网站建设 管理与维护试题做网站的经验
  • 网站推广的四个阶段包括广东网站建设便捷
  • dw网站开发流程wordpress图片保存
  • 亿恩 网站备案中国企业商务网站建设