gpt4 book ai didi

jquery - 使用 JQuery 在 Internet Explorer 中进行 CORS 身份验证

转载 作者:行者123 更新时间:2023-12-01 04:50:34 24 4
gpt4 key购买 nike

我有很多问题可以问,但我现在先从这个开始,因为它最困扰我。

我有一个开发环境(Intranet 区域)和一个需要身份验证的 Web 服务(Internet 区域),因此我使用 CORS。经过大量研究,服务器已设置为正确响应 CORS 请求;对此我百分百确定。

Web 服务已设置为允许基本身份验证以及基于 cookie 的身份验证。对于我的开发环境,我决定选择 basic,因为它很好、简单,并且在 Firefox 和 Chrome 中完美运行。也就是说,当使用以下 JQuery Ajax 调用 Web 服务时,浏览器会显示一个弹出窗口并允许我登录。

$.ajax({type:'GET',
url:'https://whatever.com/theservice',
xhrFields: {'withCredentials': true},
dataType: "json",
success: function(response) {
//do something
}
});

来自服务器的响应(缩写和信息):

HTTP/1.1 401 Unauthorized
Access-Control-Allow-Origin: http://mysandbox/
Access-Control-Allow-Headers: content-type
Access-Control-Allow-Credentials: true
WWW-Authenticate: Basic realm="Realm"

但是,IE10 不允许这样做(不显示凭据弹出窗口),但至少有一个安全选项可以启用此行为:将“跨域访问数据源”选项设置为“启用”,嘿,很快,它就像做梦一样,我开始收到弹出窗口。这是可以接受的,因为它只是一个开发环境,并不打算以这种格式发布。

但是,当我在 IE8/9 中测试相同的示例(不幸的是,这是必要的)并设置相同的安全选项时,浏览器收到 401 响应,但不显示弹出窗口。有关信息,我正在使用 jQuery.XDomainRequest.js库为 IE8/9 添加 CORS 功能。

所以我的问题是:我是否遗漏了某些内容,或者 IE8/9 根本不支持 Ajax 调用期间弹出的基本凭据?

最佳答案

我认为这是因为 IE8/IE9 中使用的 XDomainRequest 对象有几个严重的限制,包括您无法向请求添加自定义 header 。

以下是您应该注意的限制的完整列表:

http://blogs.msdn.com/b/ieinternals/archive/2010/05/13/xdomainrequest-restrictions-limitations-and-workarounds.aspx

当涉及到跨域请求时,我知道(您可以研究)的主要解决方法是:

  • JSONP
  • 使用 Flash 或 Silverlight
  • 在您自己的域上托管远程服务的 API

关于jquery - 使用 JQuery 在 Internet Explorer 中进行 CORS 身份验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20614809/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com