0

我在使用 JsReport www.jsreport.net 时遇到问题。

在服务器中,我启用了基本身份验证来保护报告编辑器,但现在模板只能通过身份验证访问。

在网页中,我使用 ember.js 并将选项传递给 jsreport.render,但出现错误“未授权”。

我在标题中传递了 btoa 但不起作用。

看一个例子:

jsreportInit = function(){
jsreport.render($("#contentReport"), renderPage("html"));

$("#generateExcel").on("click", function(){
    jsreport.render(renderPage("html-to-xlsx"));
});

function renderPage(type){
    var data = {
            headers: {
                "Authorization" : "Basic xpto" 
            },
            shortid : "${shortId}",
            recipe: type, 
            engine: "jsrender",
            options: {
                id : "${id}",
                questions : "${questions}",
                skipQuestions : "${skipQuestions}",
                eventPersons : "${eventPersons}",
                subscribers : "${subscribers}",
                urlApi: "http://${pageContext.request.serverName}:${pageContext.request.serverPort}${pageContext.request.contextPath}",
                urlReport: "${urlReport}"
            }
    }
    return data;
}};

有人可以帮助我吗?

谢了。

4

1 回答 1

1

不幸的是,目前不支持将标头传递给浏览器的jsreport.render调用。有两个原因:

  1. 这将不安全,因为这样您将在浏览器中显示凭据,并且每个人都可以轻松找到它
  2. jsreport.render主要使用不允许携带自定义标头的同步 http 帖子(表单提交)

我建议宁愿通过您的服务器路由所有请求并将 jsreport 安全地隐藏在它后面。

或者,如果您只对在编辑器中阻止模板编辑感兴趣,您可以查看jsreport freeze 扩展

于 2016-05-23T16:13:37.280 回答