要验证SSL证书,我需要将包含一些文件的隐藏文件夹(“/. well-known”)上传到我的应用程序。
我正在使用eclipse部署java应用程序,但这些文件不会在appEngine上的应用程序中接收。我想它们被过滤掉了。
我试图将隐藏文件夹作为静态文件添加到appengine web。xml,但它没有帮助。
<!-- Configure serving/caching of GWT files -->
<static-files>
<include path="**" />
<include path=".**" />
<include path="**.*" expiration="0s" />
<include path="**.well-known" expiration="0s" />
<include path="**.nocache.*" expiration="0s" />
<include path="**.cache.*" expiration="365d" />
<include path="**.css" expiration="30d"/>
<exclude path="**.gwt.rpc" />
<exclude path="**.html" />
</static-files>
我能上传这些文件夹和文件吗?
我确实找到了更好的方法,问题是代码存储在一个隐藏的目录中,所以我们只需要将正确的url映射到一个可见的目录。
handlers:-url:/。著名静态目录:_著名
我在尝试提供资产链接时遇到了这个问题。json文件。看起来文件夹确实是以。在App Engine的静态上下文中无法访问。João Antunes变通方法的更通用版本如下。
首先,创建不带文件夹的文件夹。开始时,将所有必需的文件放入其中。
然后,我们需要创建一个servlet,当收到对隐藏文件夹的请求时,它将用正确的数据进行响应。
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.InputStream;
/**
* Created by Will Calderwood on 17/05/2017.
* <p>
* It would appear to not be possible to upload hidden folders to app engine. So when files need
* to be served from a hidden folder the URL can be bounced through this servlet
*/
public class StaticFileServer extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
// We'll remove the dots from the path
String uri = req.getRequestURI().replace("/.", "/");
// Do anything else that needs doing here
if (uri.toLowerCase().contains(".json")) {
resp.setContentType("application/json");
}
// Read and return the resource from the non-hidden folder
try (InputStream in = getServletContext().getResourceAsStream(uri)) {
if (in == null){
resp.sendError(404);
return;
}
byte[] buffer = new byte[8192];
int count;
while ((count = in.read(buffer)) > 0) {
resp.getOutputStream().write(buffer, 0, count);
}
}
}
}
然后将以下内容添加到
网站。xml
文件将隐藏的文件夹指向我们的servlet
<servlet>
<servlet-name>StaticFileServer</servlet-name>
<servlet-class>main.com.you.StaticFileServer</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>StaticFileServer</servlet-name>
<url-pattern>/.well-known/*</url-pattern>
</servlet-mapping>
对于像我这样的人来说,在谷歌应用程序引擎中尝试以静态方式为letsencrypt提供挑战但失败后,下面是为我做的:(一个人可能可以静态地做,但我没有尝试,因为我不想花更多的时间尝试东西,伊恩显然尝试了,但无法使其工作(可能谷歌应用程序引擎内部完成的复制命令忽略了以点开头的目录])
摘自http://igorartamonov.com/2015/12/lets-encrypt-ssl-google-appengine/荣誉归于伊戈尔·阿尔塔莫诺夫。
只需构建一个servlet,如下所示:
公共类LetsencryptServlet扩展了HttpServlet{
public static final Map<String, String> challenges = new HashMap<String, String>();
static {
challenges.put("RzrvZ9gd7EH3i_TsJM-B0vdEMslD4oo_lwsagGskp6c",
"RzrvZ9gd7EH3i_TsJM-B0vdEMslD4oo_lwsagGskp6c.ONrZa3UelibSWEX270nTUiRZKPFXw096nENWbMGw0-E");
}
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
if (!req.getRequestURI().startsWith("/.well-known/acme-challenge/")) {
resp.sendError(404);
return;
}
String id = req.getRequestURI().substring("/.well-known/acme-challenge/".length());
if (!challenges.containsKey(id)) {
resp.sendError(404);
return;
}
resp.setContentType("text/plain");
resp.getOutputStream().print(challenges.get(id));
}
}
并添加到web.xml
something thine like:
<servlet>
<servlet-name>letsencrypt</servlet-name>
<servlet-class>...LetsencryptServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>letsencrypt</servlet-name>
<url-pattern>/.well-known/acme-challenge/*</url-pattern>
</servlet-mapping>
当然,请确保servlet类具有您创建的Servlet的完整类路径。
这篇博文还涉及生成和安装证书所需的其他步骤。
伊恩:你确定你很好地部署了servlet吗?检查日志,确保测试的版本正确。。也许你有编译问题。。
干杯
Linux 下,名称中第一个字符为 . 的文件或者文件夹,系统会将它们隐藏起来。传统上,这种文件大多是用户的配置文件。 您可以尝试以下操作: cd ~ #进入您的用户目录 ls #查看当前目录下的文件列表 ls -a #查看所有文件的文件列表(包括隐藏文件)。 如果您只想查看隐藏文件,而不包括这两个特殊目录,您可以使用 ls 命令的选项 -A (ls -A) 每个目录下都包含
但却被忽略了。 是否可以使用maven激活配置文件?
问题内容: 您如何在Tkinter中显示和隐藏小部件?我想有一个输入框,但不要一直显示它。有人可以向我展示在tkinter中显示和隐藏条目小部件和其他小部件的功能吗?我希望能够在没有多个帧的情况下执行此操作。 问题答案: 这已经在stackoverflow上得到了回答。简短的答案是,您可以使用grid_remove,如果先前是通过网格添加的,则将导致该小部件被删除。记住小部件的位置,因此只需简单地
我正在尝试Visual Studio代码。关于VisualStudio代码的一切在我看来都很酷,除了一件事:。git文件夹/文件隐藏在Visual Studio代码中。 我经常通过修改配置文件来更改Git设置。看不到文件真的很烦人。 有没有办法显示文件?
问题内容: 我需要列出文件夹中包含目录路径的所有文件。我尝试使用,这显然是完美的解决方案。 但是,它还会列出隐藏的文件夹和文件。我希望我的应用程序不列出任何隐藏的文件夹或文件。有没有可以用来使其不产生任何隐藏文件的标志? 跨平台对我而言并不是很重要,如果只适用于linux(。*模式)就可以了 问题答案: 不,没有选择会跳过这些。您需要自己这样做(这很容易): 注意切片分配;递归遍历中列出的子目录。
我实现了一个e4 RCP应用程序,我想为特殊用户隐藏部分。 在e3中,我知道我可以通过一个实现iPerspectiveFactory的透视类来做到这一点。 我现在的解决办法是: 我在part类中这样做,当我运行应用程序时,我会得到以下injectionexcetion: !Entry org.eclipse.e4.ui.workbench 4 0 201 7-08-01 09:08:06.139!