@ServerEndpoint(value = "/Push/CartPush/{token}")
public final class CartPush {
// ...
}
端点能够接受路径参数{token}。但是,路径参数是可选的,它是在Java脚本的运行时动态确定的。在JavaScript中跳过此参数,如下面的结果404。
var ws = new WebSocket("wss://localhost:8443/ContextPath/Push/CartPush");
WebSocket连接到 'wss://localhost:8443/ContextPath/Push/CartPush'失败:错误期间 WebSocket的握手:意外的响应代码:404
它使得令牌值强制如下。
var token = "token value";
var ws = new WebSocket("wss://localhost:8443/ContextPath/Push/CartPush" + "/" + token);
为了排除除了GET和POST所有不需要的HTTP方法,我用下面的限制或约束,使用适当的URL模式和角色映射在web.xml Servlet安全限制一起。
Disable unneeded HTTP methods by 403
/Public/*
/Push/*
/javax.faces.resource/*
GET
POST
如何使给定的路径参数可选?
所用的服务器是WildFly 10.0.0最后/的Java EE 7
2016-03-03
Tiny
+0
我不知道什么安全性约束得到了与具体问题做。问题仍然会保持良好,当你离开它。 –
+0
我添加了该部分作为附加信息,因为即使从'web.xml'中排除或删除'/Push/* url-pattern>',GlassFish(4.1)可以像'/ Push/CartPush'一样使用URI。另一方面,WildFly在从'web.xml'中排除''时,会用'/ Push/CartPush'报告'403'。我不知道原因。 –