其次如果是常规跨域问题可以按以下解决:
解决方案1. 后端配置 CORS(推荐)让后端在响应头中添加 Access-Control-Allow-Origin 以允许跨域访问: Access-Control-Allow-Origin: * # 允许所有域名Access-Control-Allow-Methods: GET, POST, PUT, DELETE, OPTIONSAccess-Control-Allow-Headers: Content-Type, Authorization, Token如果后端是 Nginx,可以这样配置: location /api/ { add_header 'Access-Control-Allow-Origin' '*'; add_header 'Access-Control-Allow-Methods' 'GET, POST, OPTIONS'; add_header 'Access-Control-Allow-Headers' 'DNT,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,Range,Authorization,Token'; if ($request_method = 'OPTIONS') { return 204; }}2. 前端代理(开发环境适用)如果你使用的是 Vite(如 uniapp + vite),可以在 vite.config.js 里配置代理: export default defineConfig({ server: { proxy: { '/api': { target: 'http://qingtinghrtest.youyacao.com', changeOrigin: true, rewrite: (path) => path.replace(/^\/api/, ''), }, }, },});然后前端请求改为: axios.post('/api/user/login', data);这样请求会被代理到目标服务器,避免跨域问题。 3. 使用 JSONP(仅适用于 GET 请求)如果后端支持 JSONP,可以这样请求: uni.request({ url: 'http://qingtinghrtest.youyacao.com/api/user/login', dataType: 'jsonp', success(res) { console.log(res); }});但 JSONP 只适用于 GET 请求,且需要后端支持。 4. 关闭浏览器安全策略(仅临时测试)如果是本地开发,可以临时关闭浏览器安全策略: chrome.exe --disable-web-security --user-data-dir="C:/TempChrome"msedge.exe --disable-web-security --user-data-dir="C:/TempEdge"⚠️ 注意: 这种方式仅用于本地测试,不要在生产环境使用! 5. 检查 HTTPS 问题你的 API 地址是 http://,但浏览器可能会因为 混合内容(Mixed Content) 阻止请求。可以尝试: 总结方案 | 适用场景 | 备注 | 后端配置 CORS | 生产环境推荐 | 需要后端支持 | 前端代理(Vite) | 开发环境推荐 | 仅本地有效 | JSONP | 仅 GET 请求 | 不推荐 | 关闭浏览器安全策略 | 临时测试 | 不安全 | HTTPS 升级 | 生产环境推荐 | 避免 Mixed Content |
建议: - 开发环境 → 使用 Vite 代理。
- 生产环境 → 让 后端配置 CORS 或 升级 HTTPS。
如果还是不行,可以检查: - 后端是否有 Token 验证 导致请求失败。
- 请求的 Content-Type 是否正确(如 application/json)。
- 是否有 重定向问题(如 HTTP → HTTPS 跳转导致 CORS 失败)。
|