Nginx配置跨域,覆盖后端服务跨域配置

yizhihongxing

本篇文章主要介绍了,如何通过Nginx配置跨域,并覆盖后端服务跨域配置。

先看下后端代码跨域配置:

主要的目标是:不修改后端跨域配置代码,来实现Nginx跨域指定域名。

    @Bean
    public CorsFilter corsFilter() {
        final UrlBasedCorsConfigurationSource urlBasedCorsConfigurationSource = new UrlBasedCorsConfigurationSource();
        final CorsConfiguration corsConfiguration = new CorsConfiguration();
        corsConfiguration.setAllowCredentials(true);
        corsConfiguration.addAllowedOrigin("*");
        corsConfiguration.addAllowedHeader("*");
        corsConfiguration.addAllowedMethod("*");
        urlBasedCorsConfigurationSource.registerCorsConfiguration("/**",
            corsConfiguration);
        log.info("跨域已启动");
        return new CorsFilter(urlBasedCorsConfigurationSource);
    }

    @Bean
    public RestTemplate restTemplate() {
        return new RestTemplate();
    }

}

Nginx覆盖后端代理服务的header,有两种实现方式

  1. 使用 proxy_hide_header 方式实现。
  2. 使用more_set_headers 'Access-Control-Allow-Origin: 指定域名';

使用 proxy_hide_header 方式实现:

  server {
      listen       7077;
     server_name  localhost;
     add_header Access-Control-Allow-Headers "*";
     add_header Access-Control-Allow-Methods "POST, GET, PUT, PATCH, OPTIONS";
     #隐藏后端服务响应中的 Access-Control-Allow-Origin 标头
     proxy_hide_header 'Access-Control-Allow-Origin';
     # 隐藏后再次添加 Access-Control-Allow-Origin 标头。只允许8091域下访问
     add_header 'Access-Control-Allow-Origin' 'http://192.0.0.1:8091';
     location /xxx/pc {
        proxy_pass http://192.0.0.1:7077;
     }
 }

使用more_set_headers方式实现:

more方式需要安装nginx模块。模块安装可以参考:more安装步骤

  server {
     listen       7077;
     server_name  localhost;
     add_header Access-Control-Allow-Headers "*";
     add_header Access-Control-Allow-Methods "POST, GET, PUT, PATCH, OPTIONS";
   
     #直接设置后端服务响应中的 Access-Control-Allow-Origin 标头内容。
     more_set_headers 'Access-Control-Allow-Origin: http://192.0.0.1:8091' 
     location /xxx/pc {
        proxy_pass http://192.0.0.1:7077;
    }
 }

原文链接:https://www.cnblogs.com/easonchean/p/17346848.html

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Nginx配置跨域,覆盖后端服务跨域配置 - Python技术站

(0)
上一篇 2023年4月23日
下一篇 2023年4月23日

相关文章

  • java web项目实现文件下载实例代码

    下面是“JavaWeb项目实现文件下载实例代码”的完整攻略,包含以下内容: 1.环境要求2.下载方式的选择3.实现步骤4.示例代码 1.环境要求 JavaWeb项目实现文件下载的前提是需要有一个可以对外提供服务的web服务器,如Tomcat、Jboss等,同时需要Java Servlet API包。建议使用JDK 1.7及以上版本。 2.下载方式的选择 Ja…

    Java 2023年5月20日
    00
  • 详解SpringBoot初始教程之Tomcat、Https配置以及Jetty优化

    详解SpringBoot初始教程之Tomcat、Https配置以及Jetty优化 Tomcat配置 1.引入Tomcat依赖 在项目的pom.xml文件中引入以下Tomcat依赖: <dependency> <groupId>org.springframework.boot</groupId> <artifactId…

    Java 2023年5月19日
    00
  • springboot整合mybatis流程详解

    Spring Boot整合MyBatis流程详解 MyBatis是一个流行的ORM框架,可以帮助我们轻松地操作数据库。在Spring Boot中,我们可以使用MyBatis来访问数据库。本文将介绍如何使用Spring Boot整合MyBatis,包括配置数据源、配置MyBatis、编写Mapper接口和Mapper XML文件等。同时,我们还提供了两个示例,…

    Java 2023年5月14日
    00
  • jsp实现针对excel及word文档的打印方法

    当我们需要在JSP页面中实现自定义打印Excel及Word文档的功能,主要需要以下步骤: 在JSP页面中定义需要打印的Excel或Word文档,通常是通过使用文件名标签或者使用input type=”file”>标签上传的方式获取文件。 例如: 将上传的文件保存在服务器端,通常是通过使用Apache POI库实现。 例如: //获取上传的Excel文件…

    Java 2023年6月15日
    00
  • springboot 启动项目打印接口列表的实现

    Spring Boot 启动项目打印接口列表的实现 在本文中,我们将详细讲解如何使用Spring Boot实现在应用程序启动时打印接口列表。我们将介绍两种不同的方法来实现这个目标,并提供示例来说明如何使用这些方法。 方法一:使用Endpoint Spring Boot提供了Endpoint接口,它可以用于公开应用程序的一些信息。我们可以使用这个接口来实现在应…

    Java 2023年5月18日
    00
  • java中的session对象及其常用方法小结

    下面我将为你详细讲解“java中的session对象及其常用方法小结”的攻略。 Session对象是什么? Session是Servlet技术中的一个概念,用来存储客户端与服务器之间的交互信息。在Web开发中,服务器为每个访问它的客户端创建一个Session对象,用于存储客户端的一些状态信息。Session对象主要用于在多个请求之间存储客户端的数据,以便与客…

    Java 2023年6月15日
    00
  • Java项目中如何访问WEB-INF下jsp页面

    在Java Web项目中,JSP页面一般会放在WEB-INF目录下以保证安全性。但在某些情况下,需要在Java代码中访问这些JSP页面。以下是Java项目中如何访问WEB-INF下JSP页面的完整攻略。 使用JSP的内部跳转方法: request.getRequestDispatcher("/WEB-INF/jsp/xxx.jsp").f…

    Java 2023年5月26日
    00
  • PageHelper插件实现服务器端分页功能

    下面我会为你详细讲解“PageHelper插件实现服务器端分页功能”的攻略,让你掌握这个插件的使用。 什么是PageHelper插件 PageHelper是一款开源的MyBatis分页插件,可用于在Java应用程序中分页获取数据库数据,它支持多种数据库和复杂的SQL语句,并且提供了丰富的配置选项。 安装PageHelper插件 在Maven项目中,可以通过在…

    Java 2023年6月15日
    00
合作推广
合作推广
分享本页
返回顶部