1

如何向使用 HTTP Basic Auth 的 Web 服务发出跨源请求?

我的客户端是用 jQuery 开发的,并且我的 RESTful/JSON Web 服务已经过修改,因此返回了“跨域”标头。

客户端代码:

$.ajax({
    url: "http://localhost:3000/applications", // external service
    async: false,
    beforeSend: function (req) {
        req.setRequestHeader("Authorization", "Basic "+ base64_value)
    },
    success: function (applications) { $.each(applications, function(i, app) {
        list.push(app)
    })}
})

客户端代码触发 OPTIONS 和 GET 请求(在 Chrome 中)。OPTIONS 请求失败并返回 401。

我应该为 GET 请求使用哪些标头,应该为 OPTIONS 请求使用哪些标头?哪些服务器响应标头应该用于 GET 和 OPTIONS?

我使用 cURL 和完全相同的授权标头向服务发出请求,并且这有效(即与 JavaScript 代码中的用户名/密码相同)。所以我猜这与 headers 和 OPTIONS 方法有关。

4

1 回答 1

0

我不知道这是可能的,但在阅读之后,你实际上可以做到这一点。您的代码错误来自您在 beforeSend() 中定义的 Header 值

标头名称是正确的,但这是您必须如何构造您的值(您将需要像 base64.js 这样的 Base64 编码器)

var base64 = Base64.encode(用户名 + ":" + 密码)

然后你可以使用你编写的 jQuery 块。

于 2012-08-21T06:25:20.343 回答