【发布时间】:2012-08-15 20:40:16
【问题描述】:
如何向使用 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 方法有关。
【问题讨论】:
-
尝试使用:- type:"GET" or type:"POST"
-
添加类型:“GET”没有帮助。
-
该网址在我的浏览器中有效,因此授权标头是正确的,但未在 OPTIONS 请求中发送。
标签: jquery authentication cross-domain