我已经设置了一个Apache Web Server 2.4来充当Apache Tomcat 7 的代理,通过AJP协议( Apache 端的mod_proxy_ajp和 Tomcat 端的 AJP 连接器)进行通信。一切都非常适合基本功能。
现在,我希望设置一些特定的 AJP 属性,但无法完全使其工作......
查看mod_proxy_ajp页面(http://httpd.apache.org/docs/current/mod/mod_proxy_ajp.html),在请求数据包结构部分下,我看到属性列表。这些属性包括诸如remote_user和ssl_cert之类的属性(代码值分别为0x03和0x07)。还有一个名为req_attribute的“所有其他”属性,其代码值为0x0A,可用于设置 AJP 请求中的任意属性。
此外,在同一页面的“环境变量”部分下,它声明了以下内容:
名称具有前缀 AJP_ 的环境变量将作为 AJP 请求属性转发到源服务器(从键名称中删除 AJP_ 前缀)。
这看起来很简单,事实上,我可以通过设置名为“AJP_doug-attribute”的 Apache 环境变量并分配相关值来轻松设置任意 AJP 属性,例如“doug-attribute”。完成此操作后,我可以使用 Wireshark 分析流量,并看到剖析的 AJP 块中显示的“doug-attribute”字段,前缀为十六进制值 0x0A(上面列出的“req_attribute”类型)。到目前为止,一切都很好。
现在我想尝试设置ssl_cert属性。以同样的方式,我设置了一个名为“AJP_ssl_cert”的环境变量。这样做后,它确实会显示在 Wireshark 中,但带有前缀代码“0x0A”。此外,我想要读取“javax.servlet.request.x509certificate”的 Java 应用程序找不到该证书。
但是,我还注意到网站上列出的Wireshark捕获中的一些其他属性,例如ssl_cipher和ssl_key_size。但在捕获中,它们显示为“SSL-Cipher”和“SSL-Key-Size”(并具有适当的“0x08”和“0x0B”前缀代码)。因此,我尝试再次设置 cert …
我目前正在浏览Meteor教程(https://www.meteor.com/try),并且遇到了一些困扰我的模板.
在本教程中,将创建一个简单的"Todo List"应用程序.在此应用程序中,以下HTML放在simple-todos.html文件中:
<!-- simple-todos.html -->
<head>
<title>Todo List</title>
</head>
<body>
<div class="container">
<header>
<h1>Todo List</h1>
</header>
<ul>
{{#each tasks}}
{{> task}}
{{/each}}
</ul>
</div>
</body>
<template name="task">
<li>{{text}}</li>
</template>
Run Code Online (Sandbox Code Playgroud)
然后,将以下JavaScript放入simple-todos.js文件中:
// simple-todos.js
Tasks = new Mongo.Collection("tasks");
if (Meteor.isClient) {
// This code only runs on the client
Template.body.helpers({
tasks: function () {
return Tasks.find({});
}
});
}
Run Code Online (Sandbox Code Playgroud)
此时,该示例完全按预期工作.但是,当我在文档中查看,以及查看Web上的其他示例时,我注意到语法略有不同:使用Template.myTemplate而不是Template.身体.
因此,出于好奇,我将我的JavaScript文件更改为:
Template.task.helpers({ ...
Run Code Online (Sandbox Code Playgroud)
代替:
Template.body.helpers({ ...
Run Code Online (Sandbox Code Playgroud)
但是,当我现在运行应用程序时,客户端不会显示集合中的数据.我没有得到关于未定义类型的任何错误,就像我在JavaScript中拼错模板名称一样,所以它似乎正在正确地解析模板.但为什么它不被使用或渲染?
更进一步:什么时候使用模板是合适的.myTemplate …