精华内容
下载资源
问答
  • 服务器端配置跨域

    2017-11-14 20:01:59
    开发过程中,碰到了跨域问题,这种问题,可以在服务器端通过CORS的方法解决。 OTP项目解决跨域: @Configuration public class WebConfig extends WebMvcConfigurerAdapter { @Override public void ...

    开发过程中,碰到了跨域问题,这种问题,可以在服务器端通过CORS的方法解决。

    OTP项目解决跨域:

    @Configuration
    public class WebConfig extends WebMvcConfigurerAdapter {
    	@Override
    	public void addInterceptors(InterceptorRegistry registry) {
    		registry.addInterceptor(new CookieInterceptor()).addPathPatterns(
    				"/api/v1/**");
    
    	}
    
    	@Override
    	public void addCorsMappings(CorsRegistry registry) {
    		registry.addMapping("/**");
    
    	}
    }
    


    重写函数addCorsMapping(CorsRegistry registry),添加允许跨域的路径,/**表示所有路径(directory)。
    
    
    展开全文
  • web前后端分离开发,前端Vue跨域配置服务器端nginx跨域配置
  • java服务器端配置支持跨域请求

    万次阅读 2016-05-26 16:01:24
    发现前端那边报错,无法调到接口。因为我们后端的接口是在一台服务器上,前端(使用的是nodejs)的...同时,我们服务器端也同样需要加一个配置用来解决跨域。上网上查找了相关解决方案,配置到代码中,发现OK了。所以拿
    前言:之前做好的登陆接口,刚刚拿去给前端调用。发现前端那边报错,无法调到接口。因为我们后端的接口是在一台服务器上,前端(使用的是nodejs)的代码在另一台服务器上,导致两台服务器之间无法相互调用(服务器我们使用的是tomcat 7)。所以为了解决这个问题,前端那边在接口方面加了一段代码。同时,我们服务器端也同样需要加一个配置用来解决跨域。上网上查找了相关解决方案,配置到代码中,发现OK了。所以拿出来和大家分享一下,也为以后再遇到这种问题做个记录。好了,闲话少说,开始!

    首先,上网搜索关键词 “服务器支持跨域” 发现如下几篇文章:

    http://hw1287789687.iteye.com/blog/2212292

    http://www.360doc.com/content/14/0920/14/7909375_411017244.shtml

    http://blog.csdn.net/newjueqi/article/details/27058765

    以上的文章可以参考,写的思路都很对,但是具体的操作没有写。所以我就在此把具体操作写出来就可以了。

    首先我们项目中使用的是maven管理jar包,所以我要找到对应的jar包加入到pom中。

    <!-- 跨域过滤器相关 -->
    	<dependency>
    		<groupId>com.thetransactioncompany</groupId>
    		<artifactId>java-property-utils</artifactId>
    		<version>1.9.1</version>
    	</dependency>
    		
    	<dependency>
    		<groupId>com.google.code.gson</groupId>
    		<artifactId>gson</artifactId>
    		<version>2.6.2</version>
    	</dependency>
    <!-- 跨域过滤器相关 -->

    然后接下来在项目中的web.xml中加入如下filter节点

              <filter>
    	    <description>跨域过滤器</description>
    	    <filter-name>CORS</filter-name>  
    	    <filter-class>com.thetransactioncompany.cors.CORSFilter</filter-class>  
    	    <init-param>  
    	     <param-name>cors.allowOrigin</param-name>  
    	        <param-value>*</param-value>  
    	    </init-param>  
    	    <init-param>  
    	     <param-name>cors.supportedMethods</param-name>  
    	        <param-value>GET, POST, HEAD, PUT, DELETE</param-value>  
    	    </init-param>  
    	    <init-param>  
    	     <param-name>cors.supportedHeaders</param-name>  
    	        <param-value>Accept, Origin, X-Requested-With, Content-Type, Last-Modified</param-value>  
    	    </init-param>  
    	    <init-param>  
    	        <param-name>cors.exposedHeaders</param-name>  
    	        <param-value>Set-Cookie</param-value>  
    	    </init-param>  
    	    <init-param>  
    	        <param-name>cors.supportsCredentials</param-name>  
    	        <param-value>true</param-value>  
    	    </init-param>  
    	</filter>
    	
            <filter-mapping>  
    	    <filter-name>CORS</filter-name>  
    	    <url-pattern>/*</url-pattern>  
    	</filter-mapping>

    接下来.........

    还接下来什么呀。重启服务器,跑起来吧。骚年!!!


    展开全文
  • 服务器 跨域配置

    2020-04-27 11:47:58
    需要在appconfig里面配置一下如下代码: ...--跨域处理,支持前后分离开发 Start 仅开发环境下开启--> <httpProtocol> <customHeaders> <add name="Access-Control-Allow-O...

    需要在appconfig里面配置一下如下代码:

    <system.webServer>
        
        <!--跨域处理,支持前后端分离开发 Start  仅开发环境下开启-->
        <httpProtocol>
          <customHeaders>
            <add name="Access-Control-Allow-Origin" value="*" />
            <add name="Access-Control-Allow-Headers" value="X-AspNet-Version,X-Powered-By,Date,Server,Accept,Accept-Encoding,Accept-Language,Cache-Control,Connection,Content-Length,Content-Type,Host,Origin,Pragma,Referer,User-Agent" />
            <add name="Access-Control-Allow-Methods" value="GET, PUT, POST, DELETE, OPTIONS" />
            <add name="Access-Control-Max-Age" value="1000" />
          </customHeaders>
        </httpProtocol>
        <!--跨域处理,支持前后端分离开发 End-->
     <\system.webServer>

    展开全文
  • Java SpringBoot前后分离跨域配置

    千次阅读 2019-07-16 19:37:51
    最近在做一个新项目,我用的是SpringBoot框架,采用前后分离方式进行开发,这样在联调的时候就涉及到跨域的问题,通过网上找了很多资料参考...1、跨域配置类: @Configuration @Slf4j public class CorsConfig ...

    最近在做一个新项目,我用的是SpringBoot框架,采用前后端分离方式进行开发,这样在联调的时候就涉及到跨域的问题,通过网上找了很多资料参考,最后整理出来一份可以大家直接拿来使用的代码示例,希望对大家有更多的帮助,本文并不想讲太多的理论,网上讲理论的太多了,直接把代码分享给大家:

    1、跨域配置类:

    @Configuration
    @Slf4j
    public class CorsConfig {
    
        @Bean
        public CorsFilter corsFilter() {
            final UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource();
            final CorsConfiguration config = new CorsConfiguration();
            // 允许cookies跨域
            config.setAllowCredentials(true); 
            // #允许向该服务器提交请求的URI,*表示全部允许,在SpringMVC中,如果设成*,会自动转成当前请求头中的Origin
            config.addAllowedOrigin("*");
            // #允许访问的头信息,*表示全部
            config.addAllowedHeader("*");
            // 预检请求的缓存时间(秒),即在这个时间段里,对于相同的跨域请求不会再预检了
            config.setMaxAge(18000L);
            // 允许提交请求的方法,*表示全部允许
            config.addAllowedMethod("*");
    
            source.registerCorsConfiguration("/**", config);
    
            return new CorsFilter(source);
        }
    
        @Bean
        public WebMvcConfigurer corsConfigurer() {
            return new WebMvcConfigurerAdapter() {
                @Override
                public void addCorsMappings(CorsRegistry registry) {
                    registry.addMapping("/**")
                    .allowedOrigins("*")
                    .allowedMethods("*")
                    .allowCredentials(true)
                    .maxAge(3600);
                }
            };
        }
    
    }

    2、进行token校验,在前端进行登录等操作,会进行token的相关校验,针对跨域请求的POST请求,经过断点调试,发现首先会发送【OPTIONS】请求,然后通过之后才会发起真正的POST请求,代码如下:

    @Configuration
    @WebFilter(urlPatterns = { "/*" }, filterName = "tokenFilter")
    @Slf4j
    public class TokenFilter implements Filter {
    
        @Autowired
        private CSMJedisCluster cSMJedisCluster;
    
        public static List<String> list = Lists.newArrayList();
    
        static {
            list.add("/csm-web/sys/verificationCode");
    
            list.add("/csm-web/user/login");
            list.add("/csm-web/user/logout");
            list.add("/csm-web/user/SSORemould");
            list.add("/csm-web/user/getSSOUserInfo");
    
            list.add("/csm-web/call/reveiveRecord");
        }
    
        @Override
        public void init(FilterConfig filterConfig) throws ServletException {
        }
    
        @Override
        public void doFilter(ServletRequest request, ServletResponse response, FilterChain filterChain) throws IOException, ServletException {
    
            HttpServletRequest httpServletRequest = (HttpServletRequest) request;
            HttpServletResponse httpServletResponse = (HttpServletResponse) response;
            httpServletResponse.setContentType("application/json;charset=utf-8");
            httpServletResponse.setCharacterEncoding("UTF-8");
    
    
            // 得到请求的URL
            String requestURI = httpServletRequest.getRequestURI();
    
            String method = httpServletRequest.getMethod();
    
            log.info("------ TokenFilter获取请求接口地址 ------ :【{}】,请求方式:【{}】", requestURI, method);
    
            // 直接放行
            if (list.contains(requestURI)) {
                log.info("------请求接口:【{}】,不做token校验,TokenFilter直接放行 ------ ",requestURI);
                filterChain.doFilter(request, response);
                return;
            }
    
            if ("OPTIONS".equals(method)) {
                log.info("------ 请求接口:【{}】,请求方式:【{}】 不做校验,TokenFilter直接放行 ------ ",requestURI,method);
                filterChain.doFilter(request, response);
                return;
            }
    
            String clientId = httpServletRequest.getHeader("clientId");
    
            String token = httpServletRequest.getHeader("token");
    
    
            log.info("------ TokenFilter获取Header参数 ------:【clientId = {},token = {}】", clientId, token);
    
            DataResponse responseResult = new DataResponse();
    
            if(StringUtils.isEmpty(clientId) || StringUtils.isEmpty(token)){
                responseResult.setReturnCode(RespCodeEnum.TOKEN_LOSE.getRespCode());
                responseResult.setMessage("clientId或token参数值为空,请重新登录!");
                handlePrintWriter(httpServletResponse,responseResult);
                return;
            }
    
            String redisToken = cSMJedisCluster.get(JedisConst.CSM_TOKEN_DATA_CACHE_KEY + Integer.parseInt(clientId));
            log.info("------  TokenFilter ------:【clientId = {},Redis获取该clientId的token = {}】", clientId,redisToken);
    
    
            if(StringUtils.isEmpty(redisToken) ){
                responseResult.setReturnCode(RespCodeEnum.TOKEN_LOSE.getRespCode());
                responseResult.setMessage("token已过期,请重新登录!");
                handlePrintWriter(httpServletResponse,responseResult);
                return;
            }
    
            if(token.equals(redisToken)){
                log.info("------ TokenFilter,请求的token与Redis获取的一致,直接放行------ ");
                filterChain.doFilter(request, response);
                return;
            }else{
                responseResult.setReturnCode(RespCodeEnum.TOKEN_LOSE.getRespCode());
                responseResult.setMessage("token错误,请重新登录!");
                handlePrintWriter(httpServletResponse,responseResult);
                return;
            }
    
        }
    
        @Override
        public void destroy() {
        }
    
        public void handlePrintWriter(HttpServletResponse response, DataResponse result) throws IOException{
            PrintWriter writer =null;
            OutputStreamWriter osw = null;
            try {
                osw = new OutputStreamWriter(response.getOutputStream(), "UTF-8");
                writer = new PrintWriter(osw, true);
                writer.write(JsonUtil.jsonFromObject(result));
                writer.flush();
                writer.close();
                osw.close();
            }catch (Exception e){
                e.printStackTrace();
            }finally {
            if (null != writer) {
                writer.close();
            }
            if (null != osw) {
                osw.close();
            }
        }
    
        }
    }

    可能大家的代码写法和思路不一样,可以做为一个参考,希望对大家有所帮助,那讲解的内容就很有意义。

    展开全文
  • 服务器端解决跨域
  • 编写配置文件2. 测试运行 问题 在日常开发中,我们静态服务器和生产开发服务器所使用的端口是不一致的 比如: 我们将静态资源放置到Tomcat服务器中,端口8080 而我们后端的端口为8088 所以前端就会访问不到我们后端...
  • 服务器端解决跨域问题的三种方法

    万次阅读 2016-03-01 13:57:02
    服务端解决跨域请求
  • 服务器端 跨域设置 PHP $allowHosts = ['http://www.wxshop.dev']; $requestHost = $req->server('HTTP_ORIGIN','');//获得请求头的域名信息 if(in_array($requestHost,$allowHosts)){ header("Access-Control-...
  • 服务器端设置跨域请求

    千次阅读 2017-11-17 15:13:19
    } /** * * @comment 跨域的设置 */ @Override public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException { HttpServletResponse ...
  • 前后框架(本例中是vue和koa)如何发送请求?获取响应? 以及跨域问题如何解决? vue部分: import App from './App.vue' import Axios from 'axios' new Vue({ el: '#app', render: h => h(App), mounted(){...
  • 服务器跨域设置

    2019-12-24 16:34:37
    服务器开放跨域设置 1、nginx配置文件配置: server { location / { if ($request_method = 'OPTIONS') { add_header 'Access-Control-Allow-Origin' '*'; add_header 'Access-...
  • 不论是调用第三方服务端接口,还是自己的后端服务,如果跨域未在服务器端处理,那么 Vue 部署时需要在生产环境下处理跨域。下面以 Windows 为例,采用 Nginx 两个步骤,来实现针对 Vue 项目的静态资源服务器及跨域...
  • 服务器端解决跨域访问

    千次阅读 2018-11-29 17:59:16
    跨域是页面js请求ajax,js所在html的url与请求api,不在同一个域名下,跨域解决的思路。 1、服务器端响应头允许请求的url; 2、请求由服务器转发。
  • 背景 现在,web开发的前后分离技术越来越火爆,由于最近的公司官网使用了前后分离的方案,这里就来记录一下前后分离的项目部署。...nginx配置不同端口的后台服务器部署接口代码 nginx反向代理 将发往ngin
  • 一般情况下是由后端来进行跨域允许,不会说在增加一层代理,但是在开发的模式下,为了方便,我们需要做一个前端的代理 那么为什么会出现跨域的问题? 出于浏览器的同源策略, ...
  • 服务器端代理proxy实现跨域访问

    千次阅读 2020-04-16 23:39:53
    在koa中使用代理proxy 我们知道浏览器有个"同源策略"的限制,再回忆一下...服务器端代理是如何实现跨域的原理:服务器端不直接去发出跨域请求,而在服务器端设置一个代理(proxy),由服务器端跨域下的代理发出请求,...
  • 就可以解决跨域问题的,但是现在浏览器比如chorme有做了新的跨域限制,比如要服务器端配置允许跨域才行,详见跨域问题解决,是英文的,看起来需要花点功夫;那有没有不需要服务器端配置就能解决浏览器的跨域问题的...
  • 这是需要在服务器端设置的,作为前端工程师我们不用详细掌握,但是要知道有这么个解决方案。而且,现在推崇的跨域解决方案是这一种,比 JSONP 简单许多。 response.setHeader("Access-Control-Allow-Origin", ...
  • Nginx跨域配置

    万次阅读 2020-07-02 23:13:49
    随着越来越多的项目走向了前后分离,前端服务,需要访问到不同的后端地址,经常遇到跨域问题。本文主要介绍使用Nginx解决跨域问题。 1.什么是跨域 由于浏览器的同源策略,用来限制从一个源加载的文档或脚本与来自...
  • 修改tomcat所在目录的web.xml配置文件(E:\apache-tomcat-gcxt\conf\web.xml) 添加如下代码: <filter> <filter-name>CorsFilter</filter-name> <filter-class>org.apache.catalina....
  • 1、引言典型的Web即时通讯技术应用场景,主要有以下两种形式:1)作为完整的即时通讯产品进行应用:比如独立的WebIM产品;2)作为某个更大系统中的一部分进行应用:比如客服系统(相当于工单系统里嵌入IM技术啦)。...
  • public class CorsFilter implements Filter { public void doFilter(ServletRequest req, ServletResponse res, FilterChain chain) throws IOException, ServletException { HttpServletResponse res
  • 服务器端跨域访问(CROS)解决方案

    千次阅读 2015-03-10 17:47:32
    怎样配置Apache 服务器允许跨域名请求 How do we fix cross domain scripting issue ? The simple solution is to allow the server to which request is being made to server request to any domain or to a ...
  • nodejs express 服务器端允许跨域访问设置 问题就是这样的: 处理成功后是这样的: 处理代码是这样的://给前端提供数据 router.get('/getInfoByOrder',function(req,res,next){ /*处理浏览器同源策略问题*/ ...
  • vue.config.js文件中 module.exports={ devServer:{ port:8090, host:"127.0.0.1", open:true, proxy : { "/api" : { target : "http://47.111.136.117", changeOrigin : tru...
  • 2019独角兽企业重金招聘Python工程师标准>>> ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 28,018
精华内容 11,207
关键字:

服务器端跨域配置