HTTP/HTTPS协议与跨域解决方案实战指南
在日常开发中HTTP/HTTPS协议和跨域问题是后端工程师必须掌握的核心知识。无论是API接口设计、微服务通信还是前后端分离架构都会频繁涉及这些概念。本文将从实际开发场景出发完整拆解HTTP明文传输、HTTPS加密机制、同源策略原理并提供多种跨域解决方案的实战代码。1. HTTP协议基础与工作原理1.1 HTTP协议概述HTTPHyperText Transfer Protocol是互联网上应用最为广泛的应用层协议它定义了客户端和服务器之间通信的格式和规则。HTTP协议基于请求-响应模型采用明文传输方式默认使用80端口。HTTP协议的主要特点包括无状态每次请求都是独立的服务器不保存客户端的状态信息无连接每次连接只处理一个请求响应完成后立即断开简单快速通信方式简单传输效率高灵活允许传输任意类型的数据对象1.2 HTTP报文结构详解HTTP报文分为请求报文和响应报文两种类型每种报文都包含起始行、头部字段和消息体三部分。HTTP请求报文示例GET /api/users HTTP/1.1 Host: api.example.com User-Agent: Mozilla/5.0 Accept: application/json Content-Type: application/json Content-Length: 45 {username: test, password: 123456}HTTP响应报文示例HTTP/1.1 200 OK Content-Type: application/json Content-Length: 78 Date: Mon, 23 Jan 2023 10:30:45 GMT {code: 200, message: success, data: {id: 1, name: test}}1.3 HTTP方法详解HTTP定义了多种请求方法每种方法都有特定的语义GET获取资源参数通过URL传递有长度限制POST提交数据参数在请求体中无长度限制PUT更新完整资源PATCH部分更新资源DELETE删除资源HEAD获取响应头信息OPTIONS查询服务器支持的请求方法1.4 HTTP状态码分类HTTP状态码用于表示请求的处理结果分为5大类1xx信息性状态码请求已被接收继续处理2xx成功状态码请求成功处理3xx重定向状态码需要进一步操作以完成请求4xx客户端错误状态码客户端请求有错误5xx服务器错误状态码服务器处理请求出错常见状态码说明200 OK请求成功301 Moved Permanently永久重定向400 Bad Request请求语法错误401 Unauthorized需要身份验证403 Forbidden服务器拒绝请求404 Not Found资源不存在500 Internal Server Error服务器内部错误502 Bad Gateway网关错误2. HTTPS加密传输机制2.1 HTTPS协议原理HTTPSHyperText Transfer Protocol Secure是在HTTP基础上加入SSL/TLS加密层的安全协议默认使用443端口。HTTPS通过加密传输数据防止数据在传输过程中被窃取或篡改。HTTPS的核心优势数据加密传输内容经过加密防止中间人攻击身份认证通过证书验证服务器身份数据完整性防止数据在传输过程中被篡改2.2 SSL/TLS握手过程HTTPS建立安全连接需要经过SSL/TLS握手过程客户端Hello客户端向服务器发送支持的加密套件列表和随机数服务器Hello服务器选择加密套件发送证书和随机数证书验证客户端验证服务器证书的合法性密钥交换双方通过非对称加密协商对称加密密钥加密通信使用对称加密密钥进行安全通信2.3 HTTP与HTTPS性能对比虽然HTTPS增加了加密解密开销但现代硬件优化和HTTP/2协议的使用已经大大缩小了性能差距特性HTTPHTTPS安全性明文传输不安全加密传输安全端口80443性能较快稍慢现代优化后差距很小SEO优化无优势搜索引擎排名有优势证书不需要需要SSL证书2.4 实战配置HTTPS服务器以下是在Nginx中配置HTTPS的示例# /etc/nginx/conf.d/ssl.conf server { listen 443 ssl http2; server_name example.com; # SSL证书配置 ssl_certificate /path/to/certificate.crt; ssl_certificate_key /path/to/private.key; # SSL协议配置 ssl_protocols TLSv1.2 TLSv1.3; ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384; ssl_prefer_server_ciphers off; # HSTS头强制使用HTTPS add_header Strict-Transport-Security max-age63072000 always; location / { proxy_pass http://backend_server; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; } } # HTTP重定向到HTTPS server { listen 80; server_name example.com; return 301 https://$server_name$request_uri; }3. 同源策略与跨域问题3.1 同源策略定义同源策略Same-Origin Policy是浏览器的重要安全机制它限制一个源协议域名端口的文档或脚本如何与另一个源的资源进行交互。同源判断规则协议相同http/https域名相同包括子域名端口相同示例http://a.com与https://a.com→ 不同源协议不同http://a.com与http://b.com→ 不同源域名不同http://a.com:80与http://a.com:8080→ 不同源端口不同3.2 跨域请求的限制范围同源策略主要限制以下操作AJAX请求XMLHttpRequest、Fetch APICookie、LocalStorage、IndexedDB访问DOM操作iframe跨域访问Web字体加载Web Workers脚本3.3 常见的跨域错误示例在实际开发中常见的跨域错误包括// 前端代码示例 fetch(https://api.example.com/data, { method: GET, headers: { Content-Type: application/json } }) .then(response response.json()) .then(data console.log(data)) .catch(error console.error(跨域错误:, error));浏览器控制台错误信息Access to fetch at https://api.example.com/data from origin https://www.mysite.com has been blocked by CORS policy: No Access-Control-Allow-Origin header is present on the requested resource.4. CORS跨域资源共享解决方案4.1 CORS机制原理CORSCross-Origin Resource Sharing是W3C标准允许服务器声明哪些源可以访问资源。CORS通过HTTP头来实现跨域访问控制。CORS请求分为两类简单请求使用GET、HEAD、POST方法且Content-Type为特定值预检请求非简单请求需要先发送OPTIONS请求进行预检4.2 服务端CORS配置Spring Boot配置示例// CORS配置类 Configuration public class CorsConfig { Bean public WebMvcConfigurer corsConfigurer() { return new WebMvcConfigurer() { Override public void addCorsMappings(CorsRegistry registry) { registry.addMapping(/api/**) .allowedOrigins(https://www.mysite.com, https://admin.mysite.com) .allowedMethods(GET, POST, PUT, DELETE, OPTIONS) .allowedHeaders(*) .allowCredentials(true) .maxAge(3600); } }; } }Node.js Express配置示例const express require(express); const cors require(cors); const app express(); // CORS中间件配置 app.use(cors({ origin: [https://www.mysite.com, https://admin.mysite.com], methods: [GET, POST, PUT, DELETE, OPTIONS], allowedHeaders: [Content-Type, Authorization], credentials: true, maxAge: 3600 })); // 或者手动设置CORS头 app.use((req, res, next) { res.header(Access-Control-Allow-Origin, https://www.mysite.com); res.header(Access-Control-Allow-Methods, GET, POST, PUT, DELETE, OPTIONS); res.header(Access-Control-Allow-Headers, Content-Type, Authorization); res.header(Access-Control-Allow-Credentials, true); res.header(Access-Control-Max-Age, 3600); if (req.method OPTIONS) { return res.status(200).end(); } next(); });4.3 预检请求处理对于非简单请求浏览器会先发送OPTIONS预检请求// Spring Boot中处理OPTIONS请求 RestController public class ApiController { RequestMapping(value /api/data, method RequestMethod.OPTIONS) public ResponseEntity? handleOptions() { return ResponseEntity.ok().build(); } PostMapping(/api/data) public ResponseEntityMapString, Object createData(RequestBody Data data) { // 业务逻辑处理 return ResponseEntity.ok(Collections.singletonMap(status, success)); } }5. 其他跨域解决方案5.1 JSONP跨域方案JSONP利用script标签不受同源策略限制的特性实现跨域// 前端JSONP实现 function jsonp(url, callback) { const callbackName jsonp_callback_ Math.round(100000 * Math.random()); window[callbackName] function(data) { delete window[callbackName]; document.body.removeChild(script); callback(data); }; const script document.createElement(script); script.src url (url.indexOf(?) 0 ? : ?) callback callbackName; document.body.appendChild(script); } // 使用示例 jsonp(https://api.example.com/data?paramvalue, function(data) { console.log(收到数据:, data); });// 服务端JSONP支持 RestController public class JsonpController { GetMapping(/api/jsonp-data) public String getJsonpData(RequestParam String callback, RequestParam String param) { String data {\result\: \success\, \param\: \ param \}; return callback ( data ); } }5.2 代理服务器方案通过同源服务器代理转发请求解决跨域问题Nginx反向代理配置server { listen 80; server_name www.mysite.com; location /api/ { # 代理到后端API服务器 proxy_pass https://api.example.com/; proxy_set_header Host $proxy_host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; # 处理CORS头 add_header Access-Control-Allow-Origin *; add_header Access-Control-Allow-Methods GET, POST, OPTIONS; add_header Access-Control-Allow-Headers *; if ($request_method OPTIONS) { return 204; } } location / { # 静态资源服务 root /var/www/html; index index.html; } }Node.js代理服务器示例const express require(express); const { createProxyMiddleware } require(http-proxy-middleware); const app express(); // 静态资源服务 app.use(express.static(public)); // API代理配置 app.use(/api, createProxyMiddleware({ target: https://api.example.com, changeOrigin: true, pathRewrite: { ^/api: / }, onProxyRes: function(proxyRes, req, res) { // 添加CORS头 proxyRes.headers[Access-Control-Allow-Origin] *; proxyRes.headers[Access-Control-Allow-Methods] GET, POST, PUT, DELETE, OPTIONS; proxyRes.headers[Access-Control-Allow-Headers] Content-Type, Authorization; } })); app.listen(3000, () { console.log(代理服务器运行在端口3000); });5.3 WebSocket跨域通信WebSocket协议本身支持跨域但服务器需要验证Origin头// 前端WebSocket连接 const socket new WebSocket(wss://api.example.com/ws); socket.onopen function(event) { console.log(WebSocket连接已建立); socket.send(JSON.stringify({type: auth, token: user-token})); }; socket.onmessage function(event) { const data JSON.parse(event.data); console.log(收到消息:, data); }; // Node.js WebSocket服务器 const WebSocket require(ws); const server new WebSocket.Server({ port: 8080, verifyClient: function(info, callback) { // 验证Origin const allowedOrigins [https://www.mysite.com, https://admin.mysite.com]; if (allowedOrigins.includes(info.origin)) { callback(true); } else { callback(false, 403, Forbidden); } } }); server.on(connection, function connection(ws, req) { ws.on(message, function incoming(message) { console.log(收到消息:, message); // 处理业务逻辑 ws.send(JSON.stringify({status: received})); }); });6. 生产环境最佳实践6.1 安全配置建议CORS安全配置Configuration public class SecurityCorsConfig { Value(${cors.allowed-origins}) private String[] allowedOrigins; Bean public CorsConfigurationSource corsConfigurationSource() { CorsConfiguration configuration new CorsConfiguration(); configuration.setAllowedOrigins(Arrays.asList(allowedOrigins)); configuration.setAllowedMethods(Arrays.asList(GET, POST, PUT, DELETE)); configuration.setAllowedHeaders(Arrays.asList(Authorization, Content-Type)); configuration.setAllowCredentials(true); configuration.setMaxAge(1800L); // 30分钟 UrlBasedCorsConfigurationSource source new UrlBasedCorsConfigurationSource(); source.registerCorsConfiguration(/api/**, configuration); return source; } }HTTPS安全配置# 强化SSL配置 ssl_protocols TLSv1.2 TLSv1.3; ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256; ssl_prefer_server_ciphers on; ssl_session_cache shared:SSL:10m; ssl_session_timeout 10m; # 安全头配置 add_header X-Frame-Options DENY; add_header X-Content-Type-Options nosniff; add_header X-XSS-Protection 1; modeblock; add_header Strict-Transport-Security max-age63072000; includeSubDomains; preload;6.2 性能优化策略连接复用优化// HTTP客户端连接池配置 Configuration public class HttpClientConfig { Bean public CloseableHttpClient httpClient() { PoolingHttpClientConnectionManager connectionManager new PoolingHttpClientConnectionManager(); connectionManager.setMaxTotal(100); connectionManager.setDefaultMaxPerRoute(20); RequestConfig requestConfig RequestConfig.custom() .setConnectTimeout(5000) .setSocketTimeout(10000) .setConnectionRequestTimeout(2000) .build(); return HttpClients.custom() .setConnectionManager(connectionManager) .setDefaultRequestConfig(requestConfig) .build(); } }CDN加速配置# 静态资源CDN优化 location ~* \.(js|css|png|jpg|jpeg|gif|ico|svg)$ { expires 1y; add_header Cache-Control public, immutable; add_header Access-Control-Allow-Origin *; # CDN回源配置 proxy_pass https://cdn.example.com; proxy_set_header Host cdn.example.com; }6.3 监控与日志记录跨域请求监控Component public class CorsRequestInterceptor implements HandlerInterceptor { private static final Logger logger LoggerFactory.getLogger(CorsRequestInterceptor.class); Override public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) { String origin request.getHeader(Origin); String method request.getMethod(); if (OPTIONS.equals(method)) { logger.info(预检请求 - Origin: {}, Method: {}, origin, method); } else if (origin ! null !origin.isEmpty()) { logger.info(跨域请求 - Origin: {}, Path: {}, origin, request.getRequestURI()); } return true; } }HTTPS证书监控#!/bin/bash # SSL证书过期监控脚本 check_ssl_cert() { domain$1 port${2:-443} end_date$(openssl s_client -connect $domain:$port -servername $domain 2/dev/null | \ openssl x509 -noout -enddate | cut -d -f2) end_epoch$(date -d $end_date %s) current_epoch$(date %s) days_remaining$(( ($end_epoch - $current_epoch) / 86400 )) if [ $days_remaining -lt 30 ]; then echo 警告: $domain SSL证书将在$days_remaining天后过期 # 发送告警通知 else echo 正常: $domain SSL证书剩余$days_remaining天 fi } # 检查多个域名 check_ssl_cert api.example.com 443 check_ssl_cert www.example.com 4437. 常见问题排查指南7.1 CORS配置问题排查问题1预检请求失败OPTIONS https://api.example.com/data 404 (Not Found)解决方案确保服务器正确处理OPTIONS请求问题2凭证模式下的CORS错误Access-Control-Allow-Origin cannot use wildcard * when credentials flag is true解决方案设置具体的允许源而不是通配符// 错误配置 configuration.setAllowedOrigins(Arrays.asList(*)); configuration.setAllowCredentials(true); // 正确配置 configuration.setAllowedOrigins(Arrays.asList(https://www.mysite.com)); configuration.setAllowCredentials(true);7.2 HTTPS证书问题问题证书验证失败SSL certificate problem: unable to get local issuer certificate解决方案更新CA证书包或跳过证书验证仅测试环境// 测试环境跳过证书验证生产环境禁用 Bean public RestTemplate restTemplate() throws Exception { SSLContext sslContext new SSLContextBuilder() .loadTrustMaterial(null, (certificate, authType) - true).build(); HttpClient client HttpClients.custom() .setSSLContext(sslContext) .setSSLHostnameVerifier(NoopHostnameVerifier.INSTANCE) .build(); HttpComponentsClientHttpRequestFactory requestFactory new HttpComponentsClientHttpRequestFactory(client); return new RestTemplate(requestFactory); }7.3 跨域缓存问题问题CORS配置修改后不生效解决方案清理浏览器缓存或设置合适的缓存时间// 设置适当的Max-Age configuration.setMaxAge(1800L); // 30分钟便于调试 // 生产环境可以设置更长 configuration.setMaxAge(86400L); // 24小时8. 实际项目集成示例8.1 Spring Boot微服务跨域配置多环境CORS配置# application.yml cors: allowed-origins: dev: http://localhost:3000,http://127.0.0.1:3000 test: https://test.mysite.com prod: https://www.mysite.com,https://admin.mysite.comConfiguration EnableWebMvc public class WebMvcConfig implements WebMvcConfigurer { Value(${cors.allowed-origins}) private String allowedOrigins; Override public void addCorsMappings(CorsRegistry registry) { registry.addMapping(/api/**) .allowedOrigins(allowedOrigins.split(,)) .allowedMethods(GET, POST, PUT, DELETE, OPTIONS) .allowedHeaders(*) .allowCredentials(true) .maxAge(3600); registry.addMapping(/auth/**) .allowedOrigins(allowedOrigins.split(,)) .allowedMethods(POST, OPTIONS) .allowedHeaders(Content-Type, Authorization) .allowCredentials(true) .maxAge(1800); } }8.2 网关层统一CORS处理Spring Cloud Gateway配置spring: cloud: gateway: globalcors: cors-configurations: [/**]: allowed-origins: https://www.mysite.com,https://admin.mysite.com allowed-methods: GET,POST,PUT,DELETE,OPTIONS allowed-headers: * allow-credentials: true max-age: 36008.3 前端Axios统一配置// axios配置封装 import axios from axios; const apiClient axios.create({ baseURL: process.env.REACT_APP_API_BASE_URL, timeout: 10000, withCredentials: true, // 允许携带cookie }); // 请求拦截器 apiClient.interceptors.request.use( config { const token localStorage.getItem(auth_token); if (token) { config.headers.Authorization Bearer ${token}; } return config; }, error Promise.reject(error) ); // 响应拦截器 apiClient.interceptors.response.use( response response, error { if (error.response?.status 401) { // 处理认证失败 localStorage.removeItem(auth_token); window.location.href /login; } return Promise.reject(error); } ); export default apiClient;掌握HTTP/HTTPS协议原理和跨域解决方案是后端工程师的基本功。在实际项目中建议根据具体业务需求选择最合适的跨域方案同时注重安全性和性能优化。对于新项目优先使用CORS方案对于老项目改造可以考虑代理服务器方案。无论采用哪种方案都要确保配置的正确性和安全性。

相关新闻

从 0.1 到 26:一个运行时的十七年进化史

从 0.1 到 26:一个运行时的十七年进化史

2009 年 5 月 27 日,一个叫 Ryan Dahl 的年轻人往 GitHub 上推了第一个 commit。那是一个用 C 写的 JavaScript 运行时,把 Google 开源的 V8 引擎包了一层,加了一个事件循环和一个底层 I/O 接口。初始版本号 0.1.0,只跑在 Linux 和…

2026/7/31 2:32:19 阅读更多 →
C++20协程与Qt异步编程:QCoro库原理与实践指南

C++20协程与Qt异步编程:QCoro库原理与实践指南

1. 从异步回调到协程:为什么我们需要QCoro?如果你用Qt写过稍微复杂一点的网络请求、文件读写或者耗时计算,肯定对QNetworkReply、QFile、QTimer这些类的异步信号槽机制又爱又恨。爱的是它确实避免了界面卡死,恨的是代码写着写着就…

2026/7/31 2:31:19 阅读更多 →
企业AI知识库从零搭建实战:RAG管道、文档治理与效果调优

企业AI知识库从零搭建实战:RAG管道、文档治理与效果调优

去年帮一家中型制造企业搭了一套AI知识库,把散落在各个系统里的产品文档、操作SOP、技术方案和制度规范全部接入,员工用自然语言就能检索到准确答案。这篇文章把整个过程——从文档治理到RAG调优——完整复盘。一、为什么要做企业知识库 很多企业都有这…

2026/7/31 2:31:19 阅读更多 →

最新新闻

ADC采样实战指南:从原理到硬件设计、软件配置与精度优化

ADC采样实战指南:从原理到硬件设计、软件配置与精度优化

1. 项目概述:从模拟到数字的桥梁ADC采样,全称模数转换器采样,是嵌入式系统、信号处理乃至整个数字世界感知物理现实的基石。简单来说,它的工作就是把我们身边连续变化的模拟信号,比如声音的波动、温度的高低、光线的强…

2026/7/31 7:16:19 阅读更多 →
2026年07月企业增长培训前5名参考:关注技术积累与业务落地的机构

2026年07月企业增长培训前5名参考:关注技术积累与业务落地的机构

在选择AI赋能企业增长培训公司时,核心判断维度包括技术储备的深度、课程与业务场景的匹配度、是否有真实案例验证、以及是否提供从学到用的闭环陪跑。不同企业需求差异明显——初创团队需要低成本快速验证AI工具,中小企业关注见效快的营销和办公提效&…

2026/7/31 7:16:19 阅读更多 →
C语言%符号全解析:取余运算与格式化输入输出的核心技巧

C语言%符号全解析:取余运算与格式化输入输出的核心技巧

1. 项目概述:重新认识C语言中的“%”在C语言的世界里,符号“%”绝对算得上是一位“多面手”。对于初学者,它可能只是数学课本里那个“取余”符号的代码版;对于写过几个控制台程序的朋友,它又摇身一变,成了p…

2026/7/31 7:16:19 阅读更多 →
Python C++扩展编译避坑指南:setuptools跨平台配置与依赖管理实战

Python C++扩展编译避坑指南:setuptools跨平台配置与依赖管理实战

1. 项目概述:为什么我们需要这份避坑指南?如果你正在尝试将C代码封装成Python模块,那么setuptools库大概率是你绕不开的工具。这个场景在性能优化、复用现有C库、或者与硬件交互时非常常见。表面上看,setup.py脚本写起来似乎很简单…

2026/7/31 7:16:19 阅读更多 →
SpringBoot水果电商系统开发与架构设计实践

SpringBoot水果电商系统开发与架构设计实践

1. 项目概述与核心价值水果购物管理系统是一个典型的B2C电商平台垂直领域解决方案,基于SpringBoot框架实现后端服务。这类系统在生鲜电商、社区团购、连锁水果店等场景中有广泛应用需求。我去年为本地一家连锁水果品牌实施类似系统后,其门店线上订单量提…

2026/7/31 7:15:19 阅读更多 →
C语言时间处理全解析:从time()到clock_gettime()的高精度实践

C语言时间处理全解析:从time()到clock_gettime()的高精度实践

1. 从“时间”到“时间戳”:C语言时间处理的本质在C语言的世界里,获取系统时间,听起来是个基础得不能再基础的操作。但如果你只是简单地调用一个函数,打印出一串数字,然后觉得“哦,时间拿到了”&#xff0c…

2026/7/31 7:15:19 阅读更多 →

日新闻

物理复制比逻辑复制好在哪?数据库复制原理详解

物理复制比逻辑复制好在哪?数据库复制原理详解

数据库复制是把主库数据同步到备库的机制,分为逻辑复制和物理复制两种。逻辑复制传输的是 SQL 语句或行变更事件,物理复制传输的是存储引擎底层的物理日志。阿里云 PolarDB(云原生数据库)采用物理复制,在同步延迟、数据…

2026/7/31 0:00:34 阅读更多 →
BilibiliDown:3分钟学会B站视频下载的终极指南

BilibiliDown:3分钟学会B站视频下载的终极指南

BilibiliDown:3分钟学会B站视频下载的终极指南 【免费下载链接】BilibiliDown (GUI-多平台支持) B站 哔哩哔哩 视频下载器。支持稍后再看、收藏夹、UP主视频批量下载|Bilibili Video Downloader 😳 项目地址: https://gitcode.com/gh_mirrors/bi/Bilib…

2026/7/31 0:00:34 阅读更多 →
有哪些游戏数据AI平台?游戏行业Data+AI融合方案盘点

有哪些游戏数据AI平台?游戏行业Data+AI融合方案盘点

当前,游戏行业的“DataAI融合”已从概念验证进入价值落地阶段。根据IDC 2025年数据,中国AI游戏云市场规模已达18.6亿元;同时,游戏研发环节AI渗透率高达86%,生成式AI内容普及率超过50%。面对庞大的市场,游戏…

2026/7/31 0:00:34 阅读更多 →

周新闻

深度学习道路桥梁裂缝检测系统 道路桥梁裂缝检测数据集 道路桥梁病害识别检测数据集

深度学习道路桥梁裂缝检测系统 道路桥梁裂缝检测数据集 道路桥梁病害识别检测数据集

深度学习道路桥梁裂缝检测系统 数据集6000张 完整源码已标注数据集训练好的模型环境配置教程程序运行说明文档,可以直接使用!系统支持图片、视频、摄像头等多种方式检测裂缝,功能强大实用。 1数据集6000张 8各类别

2026/7/31 1:03:03 阅读更多 →
深度学习YOLO模型如何训练 PUBG 绝地求生目标检测数据集

深度学习YOLO模型如何训练 PUBG 绝地求生目标检测数据集

pubg数据集 精选原图1.42万数据 1.49万标签 无任何重复、算法增强或冗余图像! pubg绝地求生目标检测数据集 1分类:e_body,14905个标签,txt格式 共计14244张图,99%为640*640尺寸图像 适合yolo目标检测、AI训练关键词&am…

2026/7/29 14:34:28 阅读更多 →
Apex英雄目标检测数据集 深度学习框架YOLO如何训练APEX数据集

Apex英雄目标检测数据集 深度学习框架YOLO如何训练APEX数据集

Apex检测数据集数据集详情检测类别: allies enemy tag图片总量:7247张训练集:5139张验证集:1425张测试集:683张标注状态:全部已标注,即拿即用数据格式:支持YOLO格式及其他格式&#…

2026/7/31 4:19:39 阅读更多 →

月新闻