Solution to uniapp cross-domain problem

Solution to uniapp cross-domain problem

Introduction: This article explains how to solve the cross-domain problem when uniapp and springboot are combined.

for uniapp

Edit the manifest.json file
insert image description here
and add this code at the end

"h5" : {
    
    
  		    "devServer" : {
    
    
  		         "port" : 8080, //浏览器运行端口
  		          "disableHostCheck" : true, //设置跳过host检查
  		          "proxy" : {
    
    
  		              "/api" : {
    
    
  		                  "target" : "http://localhost:8081", //目标接口域名
  		                   "changeOrigin" : true,  //是否跨域
  		                   "secure" : false,  // 设置支持https协议的代理
  											 "pathRewrite":{
    
    "^/api":""}
  		             }
  		        }
  		    }
  		}

Complete is like this

{
    
    
  "name": "LoginAndRegister",
  "appid" : "",
  "description" : "",
  "versionName" : "1.0.0",
  "versionCode" : "100",
  "transformPx" : false,
  /* 5+App特有相关 */
  "app-plus" : {
    
    
      "usingComponents" : true,
      "nvueStyleCompiler" : "uni-app",
      "compilerVersion" : 3,
      "splashscreen" : {
    
    
          "alwaysShowBeforeRender" : true,
          "waiting" : true,
          "autoclose" : true,
          "delay" : 0
      },
      /* 模块配置 */
      "modules" : {
    
    },
      /* 应用发布信息 */
      "distribute" : {
    
    
          /* android打包配置 */
          "android" : {
    
    
              "permissions" : [
                  "<uses-permission android:name=\"android.permission.CHANGE_NETWORK_STATE\"/>",
                  "<uses-permission android:name=\"android.permission.MOUNT_UNMOUNT_FILESYSTEMS\"/>",
                  "<uses-permission android:name=\"android.permission.VIBRATE\"/>",
                  "<uses-permission android:name=\"android.permission.READ_LOGS\"/>",
                  "<uses-permission android:name=\"android.permission.ACCESS_WIFI_STATE\"/>",
                  "<uses-feature android:name=\"android.hardware.camera.autofocus\"/>",
                  "<uses-permission android:name=\"android.permission.ACCESS_NETWORK_STATE\"/>",
                  "<uses-permission android:name=\"android.permission.CAMERA\"/>",
                  "<uses-permission android:name=\"android.permission.GET_ACCOUNTS\"/>",
                  "<uses-permission android:name=\"android.permission.READ_PHONE_STATE\"/>",
                  "<uses-permission android:name=\"android.permission.CHANGE_WIFI_STATE\"/>",
                  "<uses-permission android:name=\"android.permission.WAKE_LOCK\"/>",
                  "<uses-permission android:name=\"android.permission.FLASHLIGHT\"/>",
                  "<uses-feature android:name=\"android.hardware.camera\"/>",
                  "<uses-permission android:name=\"android.permission.WRITE_SETTINGS\"/>"
              ]
          },
          /* ios打包配置 */
          "ios" : {
    
    },
          /* SDK配置 */
          "sdkConfigs" : {
    
    }
      }
  },
  /* 快应用特有相关 */
  "quickapp" : {
    
    },
  /* 小程序特有相关 */
  "mp-weixin" : {
    
    
      "appid" : "",
      "setting" : {
    
    
          "urlCheck" : false
      },
      "usingComponents" : true
  },
  "mp-alipay" : {
    
    
      "usingComponents" : true
  },
  "mp-baidu" : {
    
    
      "usingComponents" : true
  },
  "mp-toutiao" : {
    
    
      "usingComponents" : true
  },
  "uniStatistics" : {
    
    
      "enable" : false
  },
  "vueVersion" : "2",
  		"h5" : {
    
    
  		    "devServer" : {
    
    
  		         "port" : 8080, //浏览器运行端口
  		          "disableHostCheck" : true, //设置跳过host检查
  		          "proxy" : {
    
    
  		              "/api" : {
    
    
  		                  "target" : "http://localhost:8081", //目标接口域名
  		                   "changeOrigin" : true,  //是否跨域
  		                   "secure" : false,  // 设置支持https协议的代理
  											 "pathRewrite":{
    
    "^/api":""}
  		             }
  		        }
  		    }
  		}

}

For spring boot

Add CorsConfig configuration file
insert image description here

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.CorsRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter;

@Configuration
public class CorsConfig {
    
    
    @Bean
    public WebMvcConfigurer corsConfigurer() {
    
    
        return new WebMvcConfigurerAdapter() {
    
    
            @Override
            public void addCorsMappings(CorsRegistry registry) {
    
    
                // 允许来自本地的8080端口发起的跨域请求
                registry.addMapping("/api/**")
                    .allowedOrigins("*")
                    .allowedMethods("GET", "POST", "PUT", "DELETE")
                    .allowCredentials(true).maxAge(3600);
            }
        };
    }
}

For sending axios requests

The port link in the backend is replaced by /api/.
insert image description here

Guess you like

Origin blog.csdn.net/qq_51447496/article/details/130670781