使用HTTP Basic Auth交叉原始服务请求

时间:2012-08-20 13:52:07

标签: jquery authentication cross-domain

如何向使用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代码中的用户名/密码相同)。所以我猜这与标题和OPTIONS方法有关。

1 个答案:

答案 0 :(得分:0)

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

中定义的Header值

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

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

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