使用fetch请求普通URL时被JavaScript提示含嵌入式凭证问题求助
问题:Fetch请求提示“URL包含嵌入式凭证”但未使用凭证
我正在开发一个网站,使用fetch请求常规URL时,JavaScript返回了和嵌入式凭证相关的错误,但我根本没用到任何凭证。
相关函数代码:
var url = 'www.MYURL.com.mialias.net/Week/update__ide.php'; fetch(url, { method: "POST" }) .then(res=>res.text()) .then( document.getElementById("ide").innerHTML = res; })
预期不会产生报错,实际收到的错误日志:
Uncaught (in promise) TypeError: Window.fetch: www.MYDOMAIN.com.mialias.net/Week/update__ide.php is an url with embedded credentials.
解决方法
给URL添加完整协议头
你的URL缺少http://或https://前缀,浏览器会误将其识别为包含嵌入式凭证的格式(即使你没添加凭证)。修改URL为带协议的完整地址:var url = 'https://www.MYURL.com.mialias.net/Week/update__ide.php';修正Promise的then回调写法
原代码中第二个then没有传入回调函数,直接写赋值语句会导致代码立即执行,不仅无法获取到异步返回的res,还会引发Promise处理错误。改成回调函数形式:.then(res => { document.getElementById("ide").innerHTML = res; })
修改后的完整代码:
var url = 'https://www.MYURL.com.mialias.net/Week/update__ide.php'; fetch(url, { method: "POST" }) .then(res => res.text()) .then(res => { document.getElementById("ide").innerHTML = res; })
内容的提问来源于stack exchange,提问作者CyanideData
相关产品推荐
相关产品推荐

