【发布时间】:2016-09-19 02:22:34
【问题描述】:
我的网站有一个搜索表单,有人可以在其中搜索以 http:// 开头的 URL,如下所示:
https://www.google.com
然后应该将其编码并附加为查询参数值,如下所示:
localhost:4000/api/https%3A%2F%2Fwww.google.com
当我(上)在本地运行它时,它可以工作,但在部署时(下):
https://api.mysite.com/search/api/https%3A%2F%2Fwww.google.com%2F
=> 返回 404。
如果我输入这个:
http://localhost:4000/api/https://www.google.com
我收到此错误:
Phoenix.Router.NoRouteError at GET /api/v1/https://www.google.com
no route found for GET /api/v1/https:/www.google.com (ExternalPing.Router)
我不确定这些是否相关。将 url 作为查询参数值附加的正确方法是什么?
我已经尝试使用 URI.encode 和 URI.encode_www_form 进行编码,但他们没有解决这个问题
【问题讨论】:
-
我认为这里的答案对你有用,即使他们没有使用路由(查看内置函数 encodeURIComponent(str) 和 encodeURI(str)。):stackoverflow.com/questions/332872/encode-url-in-javascript
-
您确定
localhost:4000/api/https%3A%2F%2Fwww.google.com不起作用吗?它应该工作。此外,您可以使用URI.encode_www_form:"http://localhost:4000/" <> URI.encode_www_form("https://www.google.com") #=> "http://localhost:4000/https%3A%2F%2Fwww.google.com"生成它。 -
localhost:4000/api/https%3A%2F%2Fwww.google.com 确实有效,但部署后无效,如下所示:api.mysite.com/search/api/https%3A%2F%2Fwww.google.com%2F
标签: url-routing elixir phoenix-framework query-parameters