使用HTTP基本身份验证服务的跨源请求



如何向使用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方法有关。

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

标题名称是正确的,但以下是您必须构建值的方式(您需要像Base64.js这样的Base64编码器)

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

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

相关内容

  • 没有找到相关文章

最新更新