📢 最新动态(2025年7月)
近期不少开发者反馈,在使用原生XMLHttpRequest
的send()
方法时频繁遇到报错,尤其是在跨域请求和某些现代浏览器环境下,随着Web API标准的更新,部分旧代码可能需要调整才能稳定运行。
报错信息:
Access to XMLHttpRequest at 'xxx' from origin 'xxx' has been blocked by CORS policy
原因:
Access-Control-Allow-Origin
) Content-Type: application/json
)未预检(OPTIONS请求) ✅ 解决办法:
Access-Control-Allow-Origin: *
Access-Control-Allow-Methods: GET, POST, PUT
报错信息:
Failed to execute 'send' on 'XMLHttpRequest'
原因:
Content-Type
,但发送了JSON数据 FormData
但传了JSON) ✅ 解决办法:
xhr.setRequestHeader('Content-Type', 'application/json');
FormData
: const formData = new FormData(); formData.append('file', file); xhr.send(formData);
报错信息:
Synchronous XMLHttpRequest is deprecated
原因:
✅ 解决办法:
async: true
): xhr.open('GET', url, true); // 第三个参数为true表示异步
报错信息:
Network Error / Timeout
原因:
✅ 解决办法:
xhr.timeout = 5000; // 5秒超时 xhr.ontimeout = () => { console.log('请求超时!') }; xhr.onerror = () => { console.log('网络错误!') };
报错信息:
Request payload is not valid
原因:
✅ 解决办法:
JSON.stringify
处理数据: xhr.send(JSON.stringify({ name: '张三' }));
try { xhr.send(data); } catch (error) { console.log('发送失败:', error); }
现代前端开发中,推荐使用fetch
或axios
替代原生XMLHttpRequest
,它们对错误处理和CORS的支持更友好!
// 使用fetch示例 fetch(url, { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify(data) }).then(response => response.json())
遇到问题别慌,一步步排查,你一定能搞定!💪
本文由 军雅媚 于2025-07-31发表在【云服务器提供商】,文中图片由(军雅媚)上传,本平台仅提供信息存储服务;作者观点、意见不代表本站立场,如有侵权,请联系我们删除;若有图片侵权,请您准备原始证明材料和公证书后联系我方删除!
本文链接:https://vps.7tqx.com/wenda/494196.html
发表评论