WebStrom 自带console调试js:NETWORK_ERR: XMLHttpRequest Exception 101

本文介绍如何解决在WebStorm中调试JavaScript时遇到的跨域问题。具体表现为NETWORK_ERR:XMLHttpRequestException101错误,这是因为浏览器限制了文件间的跨域调用。文章提供了解决方案,即通过向Chrome添加启动参数来允许跨域访问。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

WebStrom 自带console调试js:NETWORK_ERR: XMLHttpRequest Exception 101

浏览器不允许网页跨域使用js,就是当前网站只能使用当前目录下的及子目录下的文件。

不能使用和根目录同级或者更高的目录。

可在浏览器启动时加上命令:

百度到 chrome是  chrome.exe --allow-file-access-from-files


前端有问题后端在// 验证版本号 int currentVersion = versionService.getVersion(username); if (tokenVersion != currentVersion) { log.warn("令牌版本不匹配: {} != {}", tokenVersion, currentVersion); return ResponseEntity.status(498).build(); // 自定义失效状态码 }返回以后前端弹出视频加载失败: MEDIA_ERR_SRC_NOT_SUPPORTED - 不支持的视频格式,按道理来说我们在这里应该重新请求令牌,设置视频源跳转到指定进度位置正常播放视频的,前端我是根据你提供的代码修改的,你提供的前端业务代码:$(function () { // ...(原有变量声明和初始化保持不变)... // 新增状态变量 let currentPosition = 0; // 当前播放位置(毫秒) let isSeeking = false; // 是否正在跳转中 // 获取视频访问令牌(不包含位置参数) function fetchVideoToken() { $ loadingOverlay.show(); $ tokenStatus.text('获取中...').removeClass('bg-success bg-danger').addClass('bg-warning'); return new Promise((resolve, reject) => { $.ajax({ url: `${config.apiBaseUrl}/token`, method: 'POST', dataType: 'json', contentType: 'application/json', data: JSON.stringify({ videoId: config.videoId }), // 不包含位置参数 }) .done(function (res) { isPremium = res.isPremium; localStorage.setItem('isPremium', res.isPremium); $ tokenStatus.text('已获取').removeClass('bg-warning').addClass('bg-success'); resolve(res.token); }) .fail(reject); }); } // 加载视频流(不包含位置参数) function loadVideoStream(token) { resetVideoState(); $ loadingOverlay.show(); // 构造视频流URL(不包含位置参数) const streamUrl = `${config.apiBaseUrl}/play/${config.videoId}?token=${encodeURIComponent(token)}`; setVideoSource($ video, streamUrl); } // 安全跳转处理(核心机制保留) $ video[0].addEventListener('seeking', async function() { if (isSeeking) return; isSeeking = true; // 记录跳转目标位置 const targetPosition = this.currentTime; try { // 刷新令牌 const newToken = await fetchVideoToken(); // 保存当前播放状态 const wasPlaying = !this.paused; const currentVolume = this.volume; // 重新加载视频流 loadVideoStream(newToken); // 新视频加载完成后跳转到目标位置 $ video.on('loadeddata', function handler() { $ video.off('loadeddata', handler); $ video[0].currentTime = targetPosition; $ video[0].volume = currentVolume; if (wasPlaying) attemptPlay($ video); isSeeking = false; }); } catch (error) { console.error('跳转失败:', error); // 回退到跳转前位置 $ video[0].currentTime = currentPosition; isSeeking = false; } }); // 初始化播放位置追踪 $ video.on('timeupdate', function() { currentPosition = this.currentTime; }); // 自定义错误处理(保留令牌刷新机制) $ video.on('error', function(e) { const errorCode = e.target.error?.code; // 令牌失效错误处理 if (errorCode === 498) { fetchVideoToken().then(newToken => { loadVideoStream(newToken); $ video[0].currentTime = currentPosition; $ video[0].play(); }); } // ...其他错误处理保持不变... }); // 会员状态变更处理(保留) window.addEventListener('membershipChanged', () => { fetchVideoToken().then(newToken => { loadVideoStream(newToken); $ video[0].currentTime = currentPosition; $ video[0].play(); }); }); });
07-09
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值