问题标签 [plug]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
1119 浏览

elixir - Phoenix / Plug / Cowboy 中的 RewriteUrl?

如何在phoenix中重写一个Url?
例如将所有请求重写//www.app.com/xyz//app.com/xyz

是否有一个简单的选择,例如force_ssl?有谁知道,在哪里插入?有插件选项吗?

0 投票
0 回答
50 浏览

elixir - 在多个模块中使用 Elixir Plug.conn.assigns

current_user我在 Phoenix 项目中的 session_controller.ex 分配user_token给 Conn 如下。

然后我尝试current_user通过 Plug.Conn 在另一个模块中使用如下,但 Conn.assigns 那时为空。(“current_user”字段只是一个示例,它可以是任何字段)。

问题是如何将值分配给 Conn 以及如何在其他模块中使用这些值。

SessionController 中的 Conn(成功赋值)

Conn 在 SessionController 之外的模块中

0 投票
1 回答
811 浏览

json - 解析 json POST 正文

使用以下模块定义时

我收到这个错误

**(退出)引发异常:
**(Maru.Exceptions.InvalidFormat)解析参数错误:名称
(文件夹)lib/folder.ex:29:FolderService.API.route/2 中的匿名 fn/1
(maru) lib/maru/runtime.ex:25: Maru.Runtime.parse_params/3
(文件夹) lib/folder.ex:29: 匿名 fn/1 in FolderService.API.route/2
(文件夹) lib/folder.ex:29 :FolderService.API 中的匿名 fn/1。error_handler /1
(文件夹)lib/folder.ex:29:FolderService.API.call/2
(文件夹)中的匿名 fn/1 lib/folder.ex:29:FolderService.API 中的匿名 fn/1。错误处理程序/1
(插件) lib/plug/adapters/cowboy/handler.ex:15: Plug.Adapters.Cowboy.Handler.upgrade/4
(cowboy) src/cowboy_protocol.erl:442::cowboy_protocol.execute/4

运行此curl命令时:

代码工作正常,但如果我卷曲

0 投票
2 回答
3018 浏览

elixir - 在 Elixir 中的解析器之后从插头连接中读取原始正文

我需要检查发送到凤凰服务器的 JSON 内容的摘要。要检查消化,需要原始身体。有没有办法在管道中比解析器访问插件中的原始内容。我想将以下摘要验证插件添加到管道的末尾,但无法弄清楚它如何访问发送的原始内容。

0 投票
1 回答
54 浏览

session - 在 Elixir 中运行 Phoenix 应用程序时出现“找不到 memcached proc”错误

我目前在运行 phoenix 服务器应用程序时遇到问题。当我尝试访问 'localhost:4000' 时显示此错误。它抱怨它在运行时找不到 memcached proc,如下所示。

这是我的依赖项:-

这很可能是我在 endpoint.ex 中的 Plug.Session memcached 设置的问题,因为当我切换到使用 :cookies 作为我的存储时,它按预期工作,但不适用于 :memcached。任何帮助将不胜感激。

这是它在 Plug.Session.MEMCACHED 中引发参数错误的代码

0 投票
3 回答
4419 浏览

elixir - Elixir / Phoenix:如何实现会话超时/过期

我正在开发一个香草 Elixir / Phoenix 应用程序,并按照Programming Phoenix书中的一般步骤来实现基本的登录和注销系统(参见下面的片段)。但是,我在书中或在线上没有看到关于如何设置基于 cookie 的插件会话在一定时间后过期的建议。Phoenix 应用程序中的会话超时有哪些方法?

这是我的基本身份验证系统的一些相关片段:

endpoint.ex中,应用程序被配置为使用基于 cookie 的只读会话:

我写了一个插件auth.ex(除其他外)可以登录经过身份验证的用户,并且可以current_user根据user_id后续请求中找到的会话进行设置:

0 投票
2 回答
1239 浏览

http - 为什么将 HEAD 请求转换为 GET 请求很有用?

在一个新的 Phoenix 应用程序中,该Plug.Head插件默认存在,我对它的重要性很感兴趣。

我知道“ HEAD 方法与 GET 相同,只是服务器不得在响应中发送消息正文”。

我认为凤凰城的官方指南是一流的,但这让我在路由指南中感到失望:

Plug.Head - 将 HEAD 请求转换为 GET 请求并剥离响应正文

如果 HEAD 请求没有正文,那么为什么需要这样做?我想也许可以控制格式错误的请求,但查看Plug.Head 实现,它只是将 HEAD 方法切换为 GET。

我能在这个主题上找到的最接近的东西是关于 ServerFault 的问题,但它与 NGINX 和一个有缺陷的应用程序逻辑有关,其中 HEAD 请求需要转换为 GET 并将相应的 GET 响应返回给 HEAD。

0 投票
1 回答
4619 浏览

elixir - Phoenix 框架模式匹配请求标头

我正在尝试为 API 版本控制实现自定义插件。现在我需要能够匹配通过请求标头(即Accept: application/vnd.app.v1+json)传递的值。到目前为止,我已经实现了以下内容:

这目前不起作用,并且一直到第二个call/2,当没有指定接受标头时,它被设计为后备。如何匹配请求标头?

0 投票
0 回答
1004 浏览

elixir - 在 Phoenix 中设置 Plug.Static 标头

我正在尝试将标头Connection: Keep-Alive放在 lib/app/endpoint.ex 中:

但是当我跑步时curl -I -k -H "Accept-Encoding: gzip" http://localhost:4000

它不返回标头:connection: keep-alive

这是正常的还是我搞砸了什么?

0 投票
1 回答
493 浏览

elixir - 如何连接 Plug.Router 与 Plug 功能

我正在尝试在 Elixir 中设置一个非常简单的基本 HTTP API。我认为使用 Phoenix 做这样的事情完全是大材小用,所以想简单地使用 Plug 来做。我可以通过设置这样的基本路由器来做到这一点:

但是,我不知道如何将此路由器连接到另一个 Plug 功能。说,在某个地方我有这个插件兼容的功能:

如何将它连接到路由器?我尝试使用文档中的这种语法:

和其他变体,但我无法编译和/或工作。例如,上面的版本抱怨没有 random_plug/0 功能。

是的,我可以让它与整个 Plug 模块(使用initand call)一起工作,但我想弄清楚如何让它与一个函数一起工作。也许它会让我更好地理解 Elixir 的一些细节,根据文档应该是可能的。