从我的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(', ');
这是能够推向生产之前剩下的一件事。有什么想法吗?
答案 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/