• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

安全错误使用CORS在IE10与Node和Express及XMLHttpRequest:网络错误0x4c7,操作已被用户 ...

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

在IE下:VUE项目,后台替换为https请求之后,vue热更新请求挂起,控制台报错:XMLHttpRequest: 网络错误 0x4c7, 操作已被用户取消。但是chrome与Firefox正常

当从IE10发起请求时,请求从未命中API服务器。据我所知,该请求甚至不被发送。当我使用IE10的开发人员工具检查请求时,请求标头和响应标头都为空。当从任何其他浏览器发送请求时,会收到请求并正确生成响应。

原因:

CORS在IE中默认禁用,必须启用:

Explorer忽略Access-Control-Allow标头,默认情况下
禁止Internet区域的跨源访问。要启用CORS,请转到
工具 - > Internet选项 - >安全选项卡,单击“自定义级别”按钮。 
查找其他 - >访问跨域的数据源,设置
并选择“启用”选项(注:不需要重启,刷新生效)

 

请求返回正常

当我启用此设置,请求通过,一切工作,因为它应该。但是,我已经读过这个设置实际上与CORS无关,并且不应该影响它。使用此工具测试CORS兼容性时,无论此设置是启用还是禁用,这让我相信CORS 是启用的,我只是做错了。

此外,一切似乎都工作,因为它应该当我运行 Fiddler 时,因为Fiddler充当代理。

为了参考,这里是服务器端的CORS相关代码:

res.header(“Access- -Origin“,”example.com“); 
 res.header(“Access-Control-Allow-Methods”,“GET,PUT,POST,DELETE,OPTIONS”); 
 res.header(“Access-Control-Allow-Headers”,“Content-Type,Authorization,X-File-Name,X-File-Size,X-File-Type”); 
 res.header(“Access-Control-Allow-Credentials”,true); 
 if(req.method ==“OPTIONS”){
 res.send(200); 
} 
解决方案

API服务器使用HTTP而不是HTTPS。该问题听起来像可能与服务器的SSL设置相比,更多的要求本身。如果是这种情况,请尝试使用SSL设置来执行此操作。

  var options = {
    key:fs.readFileSync(key),
    cert:fs.readFileSync(certificate),
    ca:fs.readFileSync(CA),
    requestCert:false,
  }; 
 
  https.createServer(options,app).listen(443); 

 


 


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
C++快速幂运算发布时间:2022-07-13
下一篇:
2018年第九届蓝桥杯C/C++A组省赛(最后一题)发布时间:2022-07-13
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap