使用AJAX解决Cross Origin Basic Auth

时间:2013-01-18 19:34:28

标签: restify

从我的REST客户端调用时,HTTP Basic Auth工作正常。但是,使用API​​的应用程序是使用Backbone构建的。

我们尝试重写Backbone同步以传递Authorization标头,但它在选项调用上失败 - 从我理解的preflight调用,看看是否允许跨源调用。值得注意的是,这并不是Backbone的独特之处,任何具有修改标题的跨源AJAX调用都会发生这种情况。

回复屏幕截图: http://cl.ly/image/0j2v240A0p2f

我也尝试修改与Restify捆绑的fullResponse(full_response.js)插件(将Authorization添加到ALLOW_HEADERS数组。

var ALLOW_HEADERS = [
    'Accept',
    'Accept-Version',
    'Content-Length',
    'Content-MD5',
    'Content-Type',
    'Date',
    'X-Api-Version',
    'X-Response-Time',
    'Authorization'
].join(', ');

这是能够推向生产之前剩下的一件事。有什么想法吗?

2 个答案:

答案 0 :(得分:1)

最后版本的restify实现本地CORS ...所以你可以添加类似的东西(当你使用CORS时似乎需要fullReponse:

shoorkServer.use(restify.CORS());
shoorkServer.use(restify.fullResponse());

如果您使用Backbone或jquery,您应该修改服务器端:

shoorkServer.use(restify.CORS( {credentials: true} ));
shoorkServer.use(restify.fullResponse());

使用jquery的凭据:

$.ajaxSetup({
    xhrFields: {
       withCredentials: true
    }
});

答案 1 :(得分:0)

您需要在服务器上启用跨源资源共享:http://enable-cors.org/