Javascript 在Edge v42+;中提取柱不工作;
我知道在这之后我会失去你们中的大多数人,但这个错误只发生在MS Edge的最新版本42.17134.1.0中。至少有一些旧版本可以正常工作(包括41.x) 我只是简单地使用fetchapi将登录凭据发布到服务器,但甚至从未进行过调用。Edge只是完全跳过了电话 这似乎不是一个获取问题,因为我尝试了jQuery和$post,其行为完全相同。这是代码,当然是假凭证。您会注意到,在其他浏览器(甚至IE)上,它都会返回错误的用户名/密码Javascript 在Edge v42+;中提取柱不工作;,javascript,post,fetch,Javascript,Post,Fetch,我知道在这之后我会失去你们中的大多数人,但这个错误只发生在MS Edge的最新版本42.17134.1.0中。至少有一些旧版本可以正常工作(包括41.x) 我只是简单地使用fetchapi将登录凭据发布到服务器,但甚至从未进行过调用。Edge只是完全跳过了电话 这似乎不是一个获取问题,因为我尝试了jQuery和$post,其行为完全相同。这是代码,当然是假凭证。您会注意到,在其他浏览器(甚至IE)上,它都会返回错误的用户名/密码 document.getElementById("basicFet
document.getElementById("basicFetchButton").addEventListener("click", function(){
return fetch('http://fldvd-apinet01.ad.nova.edu/appcentral/appcentral/auth/token', {
headers: {
'Content-Type': 'application/x-www-form-urlencoded',
},
body: 'grant_type=password&client_id=appcentral&username=user&password=test',
method: 'POST'
}).then((data) => {
if (data.ok) {
return data.json();
}
return data.json()
.then((err) => {
throw err;
});
});
});
这里是一个链接到
如果您有任何想法或建议,我们将不胜感激。对不起,我来晚了。在使站点向后兼容Edge 41(EdgeHTML 16)和Safari 10时,我们遇到了本机Edge版本的
fetch
问题
我们的问题是,站点上存在cookie,并且与服务器上存储的内容相匹配,但是在我们的获取
请求期间,一些cookie没有被传输。这真让人头痛。与您的问题不完全相同,但解决方案可能会对您有所帮助
其缺点是安装了一个fetch
polyfill(源代码),并修改了执行polyfill时的条件
在这里读书使我产生了我的想法。dgraham建议在if(self.fetch&&self.Headers.prototype.entries){
这对我不起作用,因为我的目标是仅在1)
self.fetch
不存在。2) 'self.fetch'确实存在,但它是Edge的EdgeHTML版本 我们如何判断存在
self.fetch
,但用户正在使用EdgeHTML版本进行查看?我发现的是Edge版本41.16299-44.18362(最新的EdgeHTML版本)执行!!self.Headers.prototype.entries.prototype
为true
。这是使用BrowserStack.com或VM Win10机器在Edge版本40、41、42、44上测试的
大多数其他浏览器以false
的形式执行测试。以下是对此测试执行false的浏览器列表:
- 铬v42
- 铬v79
- FF v44
- FF v73
- Safariv10.1
- Safariv13.0
获取
和标题
,但是对于!!self.Headers.prototype.entries
测试false。因此dgraham是正确的,我们需要对此进行测试。当!!self.Headers.prototype.entries时,我发现测试的浏览器列表为false
执行的代码>为:
- Edge v40(EdgeHTML 15.15063)
- FF v40
很抱歉这么冗长。这是我将fetch
polyfill包装在其中的代码:
var loadPoly = false
if(!self.fetch){loadPoly = true}
if(!loadPoly && !self.Headers.prototype.entries){loadPoly = true}
if(!loadPoly && !!self.Headers.prototype.entries.prototype){loadPoly = true}
if(!!loadPoly){...
当您说它失败时,您收到的错误是什么?是您正在生成的后端错误还是特定于fetch
和/或ajax
?同样,它似乎完全跳过了调用。在开发控制台的“网络”选项卡中根本没有错误,也没有网络调用。您是否找到了导致此错误的原因或解决方案是@sn3ll吗?它似乎在更高版本(44)中对我有效,但我仍然有42上的用户在使用它。没有,甚至在edge开发者板上贴了一张罚单,也没有得到回应。我们只是建议用户升级到最新版本。典型的Microsoft