我正在创建一个使用HTTPS的安全的基于Web的API; 但是,如果我允许用户使用查询字符串配置它(包括发送密码)这也是安全的,还是应该通过POST强制它?
看起来很容易使用任何支持此功能的HTTP头客户端向您的websocket客户端添加自定义HTTP标头,但我无法找到如何使用JSON API执行此操作.
任何人都知道如何实现它?
var ws = new WebSocket("ws://example.com/service");
Run Code Online (Sandbox Code Playgroud)
具体来说,我需要能够发送HTTP授权标头.
我正在尝试使用 Websocket 执行 kubernetes pod,根据 kubernetes 文档,它可以通过传递承载 THETOKEN来实现
当使用来自 http 客户端的承载令牌身份验证时,API 服务器需要一个值为 Bearer THETOKEN 的 Authorization 标头
下面是wscat
将 Header Value 传递--header "Authorization: Bearer $TOKEN"
给 pod 建立 exec 并且连接成功的示例
/ # wscat --header "Authorization: Bearer $TOKEN" -c "wss://api.0cloud0.com/api/v1/namespaces/ba410a7474380169a5ae230d8e784535/pods/txaclqhshg
-6f69577c74-jxbwn/exec?stdin=1&stdout=1&stderr=1&tty=1&command=sh"
Run Code Online (Sandbox Code Playgroud)
但是当涉及到来自 Web 浏览器的Websocket API连接时
如何根据文档在 web Socket 中传递这个 Beaer Token 没有传递自定义标头的标准方法
在 API 查询中尝试了 URI 查询参数access_token= Bearer TOKEN它不起作用并且身份验证被 403 拒绝
wss://api.0cloud0.com/api/v1/namespaces/ba410a7474380169a5ae230d8e784535/pods/txaclqhshg-%206f69577c74-jxbwn/exec?stdout=1&stdin=1&stderr=1&tty=1&command=%2Fbin%2Fsh&command=-i&access_token=$TOKEN
Run Code Online (Sandbox Code Playgroud) 我的 API 管理器工具要求我应该通过 websocket 调用传递授权承载访问令牌。他们在其中提供了 Java 代码示例。
不记名令牌设置为 ("Authorization", "Bearer e2238f3a-e43c-3f54-a05a-dd2e4bd4631f") 。我如何在 javascript 中做到这一点?
// HttpResponseDecoder to WebSocketHttpResponseDecoder in the pipeline.
final WebSocketClientHandler handler = new WebSocketClientHandler(
WebSocketClientHandshakerFactory
.newHandshaker(uri, WebSocketVersion.V13, null,
false, new DefaultHttpHeaders()
.add("Authorization", "Bearer e2238f3a-e43c-3f54-a05a-dd2e4bd4631f")));
Run Code Online (Sandbox Code Playgroud)
这就是他们在 java 中的做法 有没有办法从我的 java 脚本 [Angular2] Web 应用程序中做到这一点?我如何从 UI 传递这个?任何基于 Websocket 的测试工具都可以模拟这一点?
websocket ×3
javascript ×2
header ×1
http ×1
https ×1
java ×1
kubernetes ×1
query-string ×1
socket.io ×1
ssl ×1
xterm ×1