【问题标题】:JavaScript for HTTP post XML with authentication用于带有身份验证的 HTTP post XML 的 JavaScript
【发布时间】:2012-04-18 13:50:19
【问题描述】:

我想实现类似的东西 curl --digest -u 用户名:密码 -d "mydata" http://example.com/push 使用 Javascript 作为 chrome 插件。 这是我的代码。

<html>
<head>
</head>
<body>
<script src="http://code.jquery.com/jquery-1.7.1.min.js"></script>
<script type='text/javascript' src="jquery.base64.js"></script>
<script language="javascript">

      function setHeader(xhr) {
          xhr.setRequestHeader('Authorization', $.base64Encode('username:password'));
      }

      $.ajax({
        type: "POST",
        url: "http://example.com/push",
        data: "<Phone><Data>mydata</Data></Phone>",
        xhrFields: {
           withCredentials: true
        },
        crossDomain: true,
        beforeSend: setHeader,
        success: function (data,status,xhr){
          //do something
        }
      });
</script>
</body>
</html>

这是一个带有 HTTP 基本身份验证的跨域 POST。 由于 CORS,chrome 浏览器而不是 POST 发送一个 OPTIONS 消息质询来发起。 如果我将 url 更改为相同的域,它可以工作。 如果我禁用身份验证,它也可以工作。 但是我必须发布到另一个不受我控制的域,这意味着我不能使用像 easyXDM 这样的解决方案。它们还需要 HTTP 基本身份验证。我一直在寻找解决方案一个星期。任何提示表示赞赏。

【问题讨论】:

  • 如果他们不支持 CORS (OPTIONS),你就无能为力了。

标签: javascript jquery ajax google-chrome cross-domain


【解决方案1】:

你试过了吗:

xhr.setRequestHeader("Authorization", "Basic " + encodeBase64(username + ":" + password) //usage: Authorization: Basic QWxhZGRpbjpvcGVuIHNlc2FtZQ==

参考:http://www.w3.org/Protocols/HTTP/1.0/spec.html#BasicAA

【讨论】:

    猜你喜欢
    • 2011-09-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-09-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多