2016-09-16 19 views
0

我的网站上有一个搜索表单如果有人可以搜索一个URL以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但他们并没有解决这个

+0

我认为这里的答案会为你工作,即使他们'不使用路由(查看内置函数encodeURIComponent(str)和encodeURI(str)。):http://stackoverflow.com/questions/332872/encode-url-in-javascript –

+0

你确定'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“'。 – Dogbert

+0

localhost:4000/api/https%3A%2F%2Fwww.google.com确实能够正常工作,但它无法正常工作,例如: https://api.mysite.com/search/api/https %3A%2F%2Fwww.google.com%2F – matcha

回答

0

现在你还没有发布的服务器代码,所以我只是要在这里承担。

我认为问题在于你没有对第二个字符串进行编码,因为它在/ url中包含/你有问题。

的网址是: http://localhost:4000/api/https://www.google.com

服务器将它解释错了。所以,你问一个名为路线:

/api/https:/

一个叫/www.google.com

您需要编码查询字符串参数。

但是这又是一个猜测,因为我不知道你的服务器的外观。

我只是试图在与未编码的URL作为参数传递我的IIS服务器调用一个端点,而这是它给我回:

<Error> 
    <Message>The request is invalid.</Message> 
</Error>