0

从我的 REST 客户端调用时,HTTP Basic Auth 运行良好。但是,使用 API 的应用程序是使用 Backbone 构建的。

我们尝试覆盖主干同步以传递授权标头,但它在选项调用中失败——据我所知,preflight调用是为了查看是否允许跨源调用。重要的是要注意这不是 Backbone 独有的,任何修改了标头的跨域 AJAX 调用都会发生这种情况。

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

我还尝试修改与 Restify 捆绑在一起的 fullResponse (full_response.js) 插件(通过添加AuthorizationALLOW_HEADERS数组。

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

这是能够投入生产之前剩下的为数不多的事情之一。有什么想法吗?

4

2 回答 2

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
    }
});
于 2013-03-06T02:57:54.687 回答
0

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

于 2013-01-18T19:45:54.180 回答