在Firefox和Chrome中,基于XMLHttpRequest的具有基本身份验证的CORS调用失败

安迪

需要通过JavaScript(在www.domain1.com中)使用Basic Auth进行REST GET调用。REST API在domain2.com中。REST API返回带有CORS特定的HTTP标头。我需要支持IE,Chrome和Firefox。JavaScript下面进一步解释了该问题–

  1. 没有基本身份验证(IE 10,Chrome和Firefox中的WORKS,通过XDomainRequest对象处理较旧的IE)

    var xhr = new XMLHttpRequest();
    xhr.open(method, url, true);
    
  2. 使用基本身份验证(仅IE 10中的WORKS,Chrome和Firefox中失败)

    var xhr = new XMLHttpRequest();
    xhr.open(method, url, true, username, password);
    
  3. 使用基本身份验证(Chrome和Firefox中失败)

    var xhr = new XMLHttpRequest();
    xhr.open(method, url, true);
    xhr.setRequestHeader("Authorization", "Basic " + btoa(username + ":" + password));
    xhr. withCredentials = “true”;
    
  4. 使用基本身份验证(Chrome和Firefox中失败)

    $.ajax({
    type: 'GET',
    url: jsonp_url,
    dataType: "json",
    username: username,
    password: pwd,
    beforeSend: function (xhr) {xhr.withCredentials = true; },
    success: function (result) { },
    error: function (xhr, ajaxOptions, thrownError) {
    }
    

    我很想在这里获得一个可以在具有Basic Auth的Chrome和FireFox中使用的解决方案

安迪

解决了 注意,浏览器分两步通过Authentication进行跨域调用-在实际请求之前进行预检调用。在IE和[Chrome + Firefox]中,此预检呼叫的性质有所不同。IE发出HTTP GET预检调用,然后返回401,然后在实际请求中发送身份验证详细信息。但是,Chrome和Firefox通过执行HTTP OPTIONS调用来检查Web服务器作为CORS支持的所有功能(允许哪个域/是否支持GET / POST等),从而采取了更为安全的方法,而下一个调用与实际的HTTP GET请求一起进行与身份验证。

不幸的是,API方面的编码方式是对每个Http调用进行身份验证。这就是为什么HTTP OPTIONS调用也返回401的原因。[chrome + Firefox]在预检调用后立即引发异常。

在API方面,修改了在OPTIONS调用下不返回401的代码,并且该代码开始工作。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

具有SSL和基本身份验证的SolrCloud

来自分类Dev

用于调用具有基本身份验证和分段文件上传的 POST 请求的 curl 命令

来自分类Dev

具有表单身份验证的ASP.NET MVC和具有基本身份验证的WebApi

来自分类Dev

具有表单身份验证的ASP.NET MVC和具有基本身份验证的WebApi

来自分类Dev

硒和铬78基本身份验证失败

来自分类Dev

具有正确凭据的C#WebClient HTTP基本身份验证失败401

来自分类Dev

具有JWT和基本身份验证的HttpListener:如何发送WWW身份验证?(自托管)

来自分类Dev

具有基本身份验证的Elasticsearch舵图

来自分类Dev

具有同构获取的基本身份验证

来自分类Dev

jQuery基本身份验证失败

来自分类Dev

jQuery基本身份验证失败

来自分类Dev

具有接受和内容类型的基本身份验证的呼叫URL

来自分类Dev

yii2-httpclient具有基本身份验证和代理设置

来自分类Dev

具有基本身份验证和多个参数的Ruby Post请求

来自分类Dev

具有基本身份验证和SSL的Play Framework REST

来自分类Dev

具有自签名SSL和HTTP基本身份验证的AFHTTPRequestOperation(-1012错误)

来自分类Dev

具有基本身份验证和承载令牌的PHP Guzzle

来自分类Dev

Spring集成中具有基本身份验证的出站网关

来自分类Dev

在Mocha和SuperTest中设置基本身份验证

来自分类Dev

基本身份验证和HttpContext

来自分类Dev

基本身份验证和JWT

来自分类Dev

Rails 中的基本身份验证

来自分类Dev

XMLHttpRequest无法通过基本身份验证

来自分类Dev

XMLHttpRequest无法通过基本身份验证

来自分类Dev

Jetty Embedded:使用 CORS + 基本身份验证 (ConstraintSecurityHandler)

来自分类Dev

基本身份验证 Angular2(非 CORS)

来自分类Dev

Spring Boot Resttemplate HTTP POST 具有基本身份验证和自定义对象

来自分类Dev

Chrome:基本身份验证图片请求返回401,但直接调用时不返回

来自分类Dev

具有WCF和Windows身份验证的CORS

Related 相关文章

  1. 1

    具有SSL和基本身份验证的SolrCloud

  2. 2

    用于调用具有基本身份验证和分段文件上传的 POST 请求的 curl 命令

  3. 3

    具有表单身份验证的ASP.NET MVC和具有基本身份验证的WebApi

  4. 4

    具有表单身份验证的ASP.NET MVC和具有基本身份验证的WebApi

  5. 5

    硒和铬78基本身份验证失败

  6. 6

    具有正确凭据的C#WebClient HTTP基本身份验证失败401

  7. 7

    具有JWT和基本身份验证的HttpListener:如何发送WWW身份验证?(自托管)

  8. 8

    具有基本身份验证的Elasticsearch舵图

  9. 9

    具有同构获取的基本身份验证

  10. 10

    jQuery基本身份验证失败

  11. 11

    jQuery基本身份验证失败

  12. 12

    具有接受和内容类型的基本身份验证的呼叫URL

  13. 13

    yii2-httpclient具有基本身份验证和代理设置

  14. 14

    具有基本身份验证和多个参数的Ruby Post请求

  15. 15

    具有基本身份验证和SSL的Play Framework REST

  16. 16

    具有自签名SSL和HTTP基本身份验证的AFHTTPRequestOperation(-1012错误)

  17. 17

    具有基本身份验证和承载令牌的PHP Guzzle

  18. 18

    Spring集成中具有基本身份验证的出站网关

  19. 19

    在Mocha和SuperTest中设置基本身份验证

  20. 20

    基本身份验证和HttpContext

  21. 21

    基本身份验证和JWT

  22. 22

    Rails 中的基本身份验证

  23. 23

    XMLHttpRequest无法通过基本身份验证

  24. 24

    XMLHttpRequest无法通过基本身份验证

  25. 25

    Jetty Embedded:使用 CORS + 基本身份验证 (ConstraintSecurityHandler)

  26. 26

    基本身份验证 Angular2(非 CORS)

  27. 27

    Spring Boot Resttemplate HTTP POST 具有基本身份验证和自定义对象

  28. 28

    Chrome:基本身份验证图片请求返回401,但直接调用时不返回

  29. 29

    具有WCF和Windows身份验证的CORS

热门标签

归档