2016-09-16 58 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>