uniapp h5打包后跨域问题

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了uniapp h5打包后跨域问题相关的知识,希望对你有一定的参考价值。

参考技术A 开发环境中设置浏览器跨域只要设置 vue.config.js 的devServer的proxy代理即可;

此时就要配置服务器(这边用的nginx代理服务器)的代理配置;

proxy_pass的匹配规则如下:

记使用spring security 后跨域配置失效的问题

之前项目使用的都是shiro, 解决跨域问题都是实现 WebMvcConfigurer 接口, 重写以下方法

    @Override
    public void addCorsMappings(CorsRegistry registry) 
        registry.addMapping("/**")
                .allowCredentials(true)
                .allowedHeaders("*")
                .allowedOrigins("*")
                .allowedMethods("GET", "POST", "PUT", "DELETE", "OPTIONS")
                .maxAge(3600);
    

当然也可以使用 CorsFilter 的方法

但是新项目用了 spring security, 如此配置还存在跨域问题, 后来查了一些资料, 需要再security的配置中加入一些配置

    @Override
    protected void configure(HttpSecurity httpSecurity) throws Exception
    
        httpSecurity
                // CRSF禁用,因为不使用session
                .csrf().disable()
                // 认证失败处理类
                .exceptionHandling().authenticationEntryPoint(unauthorizedHandler).and()
                // 基于token,所以不需要session
                .sessionManagement().sessionCreationPolicy(SessionCreationPolicy.STATELESS).and()
                // 过滤请求
                .authorizeRequests()
                // 对于登录login 验证码captchaImage 允许匿名访问, 对小程序接口不拦截
                .antMatchers("/login", "/captchaImage", "/api/**", "/wx/**").anonymous()
                .antMatchers(
                        HttpMethod.GET,
                        "/*.html",
                        "/**/*.html",
                        "/**/*.css",
                        "/**/*.js"
                ).permitAll()
                .antMatchers("/profile/**").anonymous()
                .antMatchers("/common/download**").anonymous()
                .antMatchers("/swagger-ui.html").anonymous()
                .antMatchers("/swagger-resources/**").anonymous()
                .antMatchers("/webjars/**").anonymous()
                .antMatchers("/*/api-docs").anonymous()
                .antMatchers("/druid/**").anonymous()
                // 除上面外的所有请求全部需要鉴权认证
                .anyRequest().authenticated()
                .and()
                //设置跨域, 如果不设置, 即使配置了filter, 也不会生效
                .cors()
                .and()
                .headers().frameOptions().disable();
        httpSecurity.logout().logoutUrl("/logout").logoutSuccessHandler(logoutSuccessHandler);
        // 添加JWT filter
        httpSecurity.addFilterBefore(authenticationTokenFilter, UsernamePasswordAuthenticationFilter.class);
    

 

以上是关于uniapp h5打包后跨域问题的主要内容,如果未能解决你的问题,请参考以下文章

uniapp h5跨域问题解决方案

uni-app跨域请求接口解决办法

uniapp之h5反向代理设置踩坑,解决跨域问题

解决h5版的uniapp请求跨域问题

记使用spring security 后跨域配置失效的问题

记使用spring security 后跨域配置失效的问题