我的网站有一个搜索表单,有人可以搜索以http://开头的网址,如下所示:
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进行编码,但是他们没有解决这个问题
答案 0 :(得分:0)
现在你还没有发布你的服务器代码,所以我将在这里假设。
我认为问题在于你没有对第二个字符串进行编码,因为它在你的网址中包含/你有问题。
网址是:
http://localhost:4000/api/https://www.google.com
服务器会解释错误。所以你要求的路线叫做:
/api/https:/
使用名为/www.google.com
您需要对查询字符串进行编码。
但这又猜测了,因为我不知道你的服务器是怎么看的。
我只是尝试使用未编码的url作为参数调用我的iis服务器上的端点,这就是它给了我的回复:
<Error>
<Message>The request is invalid.</Message>
</Error>