问题标签 [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 回答
56 浏览

elixir - 有没有办法从 EEx 模板中获取修改后的数据

我正在使用 EEx 模板引擎来呈现 HTML 页面(这里没有 Phoenix)。我将连接 ( Plug.Conn)conn与提取的参数列表 ( params) 和会话映射 ( session) 一起传递给模板:body = EEx.eval_file(path, conn: conn, params: conn.params, session: session)params并且session只是为了方便而提供,因为它们也在连接中。

如果页面修改了会话(使用 cookie 配置),例如使用类似的东西<% Plug.Conn.put_session(conn, "reply", 42) %>),这会修改连接,但这也保持在页面本地并且不会传播。

有没有办法从 EEx 引擎检索这个修改后的连接版本?

注意:我说的是连接(Plug.Conn),但它可以是由模板引擎修改或创建的任何变量,就像类似的方式Code.eval_string("a=1\n b=2\n c=a+b")一样:{3, [a: 1, b: 2, c: 3]}

0 投票
0 回答
34 浏览

elixir - Phoenix.Router 主机子域中断测试

我正在更改我的路由器/api以使用api.子域,但突然所有使用路由器的测试都失败了。你知道我是否需要配置一些额外的东西吗?

测试错误:

前:

后:

0 投票
1 回答
391 浏览

elixir - 如何在 Elixir / Plug 中访问文件上传 / POST

有很多关于如何使用 Phoenix 执行此操作的信息,但我有意避免使用 Phoenix,直到我了解有关 Elixir 工作原理的更多信息。

为此,我有以下Plug.Router路径:

它接受来自表单的文件上传,在EEx模板中呈现:

通过此表单上传文件时,我得到以下输出IO.inspect(Plug.Conn.read_body(conn))

我已经多次阅读Plug.Upload文档,但它似乎主要是您可以使用的结构。

Plug.Parsers文档说明了以下内容,但我不知道“启动:plug应用程序”的实际含义:

文件处理

如果通过任何解析器上传文件,Plug 会将上传的内容流式传输到临时目录中的文件,以避免将整个文件加载到内存中。为此,需要启动 :plug 应用程序才能进行文件上传。有关如何处理上传文件的更多详细信息,请参阅 Plug.Upload 的文档。

上传文件时,标识该文件的请求参数将是 Plug.Upload 结构,其中包含有关上传文件(例如文件名和内容类型)以及文件存储位置的信息。

我添加:plug到我的extra_applications,但这似乎并没有改变任何东西:

作为参考,这是我的主管应用程序:

0 投票
1 回答
137 浏览

server - 我如何在 Elixir 中允许使用带有 plug_cowboy 的 CORS?

我正在尝试通过在其他地方进行 API 调用来访问这些端点,我该如何允许 CORS?我在 localhost:4001 上运行它,并从 localhost:3000 (react) 进行 API 调用。提前致谢。如果您需要任何额外的信息(或文件),请随时询问。

0 投票
0 回答
56 浏览

elixir - 如何在 Elixir 中使用 Cowboy 创建一个保持活动的 API 端点?

注意:我是 elixir 和论坛的新手,因此我的问题可能会遗漏一些细节。如果我需要其他信息,请告诉我。我正在尝试集成交易视图的 /streaming 端点

它所说的一个片段是: 价格流。服务器不断保持连接活跃如果连接中断 - 服务器会不断尝试恢复它TradingView 与此端点建立最多 4 个同时连接,并期望为所有这些连接获得相同的数据。传输模式是分块编码。数据馈送应设置“传输编码:分块”,并确保所有中间代理都设置为使用此模式。所有消息都以 \n 结尾。数据流应仅包含实时数据。它不应包含数据快照。

谁能帮我实现一个可以保持连接活跃的端点?我使用牛仔作为框架。

我已经使用了 Plug 的 send_response 和 send_chunked 与 halt 一起使用,但没有成功。

0 投票
1 回答
152 浏览

elixir - Access.get/3 中没有匹配的函数子句

在空闲时间我正在学习 elixir,现在我正在尝试开发简单的 Elixir API。一切正常,除了当我尝试使用 Postman/curl 插入新值时。当我尝试使用此类数据时:

我得到这个错误:(FunctionClauseError) no function clause matching in Access.get/3

这是我的端点中的 POST 代码。

插入函数和 process_insert 的示例:

如果这还不够,我将提供更多代码。感谢您的任何建议和帮助。

0 投票
1 回答
65 浏览

elixir - 恶意请求(通过无效 URI)导致 Elixir Phoenix/Plug 中抛出异常

我刚刚收到来自 Sentry 的警报,来自我在生产中运行的应用程序,这似乎是由恶意请求引起的。

我已经设法在我的本地环境中重新创建错误:

可以看出,请求中的 URL 路径是/cgi-bin/%%32%65%%32%65/%%32%65%%32%65/%%32%65%%32%65/%%32%65%%32%65/%%32%65%%32%65/%%32%65%%32%65/%%32%65%%32%65/bin/sh. 这看起来像是尝试对 URI 字符串进行双重编码以遍历目录结构 ( %%32%65%%32%65-> %2e%2e-> ..)。然而,这似乎在这个URI.decode阶段失败了,这是有道理的,因为类似的东西%%32是无效的。

我的问题是我宁愿我的服务器没有从这样的事情中抛出错误。理想情况下,它只处理此问题并以 404 或 400(或其他 4xx 状态)响应,因为这是一个无效请求。

这是Plug需要处理的事情吗?或者这是我应该在我的 Phoenix 应用程序中处理的事情?

0 投票
0 回答
70 浏览

elixir - 尝试访问 Phoenix 应用程序子目录中上传的图像文件时出现“Phoenix.Router.NoRouteError”

Phoenix/Elixir 学习者在这里 :)

我试图访问 Phoenix 应用程序的子目录(即:dashboard)下的图像文件,例如:

但它不断向我抛出相同的错误消息

这是我的配置设置的片段endpoint.ex

另外,我将上传文件夹(user_media)放在 Phoenix 应用程序根目录的同一级别。

希望有人能指出我在这里错过了什么。

提前致谢。
-dewa-

0 投票
0 回答
21 浏览

elixir - 凤凰自定义错误视图不发送分配?

在自定义错误视图呈现由凤凰服务器捕获的错误后,我正在尝试访问分配。

我的问题是分配属性没有过来。我的具体问题是,由于缺少分配地图,用于主页导航的功能认为用户已注销。

我不认为自定义错误模板有额外的实现步骤,并且这些东西是在项目开始时自动生成的,但是可以在此处找到文档。

我的error_view.ex

我的dev.exs端点:

  1. 通过访问将抛出 Phoenix 的NoRouteError.

  2. 使用自定义的错误视图来捕获该 404 错误并获得一些输出。

  3. 将响应视为:

现在您可以看到为什么这是一个问题,我需要我的分配以验证用户是否已登录或是否确实有任何先前保存在连接对象中的数据,例如:plug_session变量。

为什么每当我尝试捕获自定义错误时,我的分配都会被扔进垃圾桶?它与 HTTP 的别有用心的设计有关吗?这还是凤凰吗?当服务器出现 404 错误时,我什至可以获取连接信息吗?

0 投票
2 回答
30 浏览

elixir - Plug.Conn,所有的插头都必须接收一个连接(conn)并返回一个连接

所以我试图通过匹配params["state"]回调来更新模式,在我的控制器中,我正在做这样的事情。

params["state"]如果是,我的函数将处理更新captured,就像这样

一切正常,但最后我没有回来Plug.Conn。错误是说

我不完全确定为什么?我应该回到这里做什么?