如何在URL参数中转义斜杠

时间:2016-05-26 08:49:41

标签: javascript php

$.ajax({
        url: "/api/v1/cases/annotations/" + case_id + "/" + encodeURIComponent(current_plink),

我正在使用 encodeURIComponent 来转义斜杠。但它对我不起作用。此代码转换"斜杠"到"%2F"但是apache不承认它。

我的php部分是这样的:

$app->get('/cases/annotations/:case_id/:prep_name', 'authenticatePathologist', function($case_id, $prep_name) use ($app) {

如果我尝试发送包含斜杠的参数,则返回找不到的页面。 enter image description here

但是如果我尝试发送不包含斜杠的参数,则返回OK。 enter image description here

3 个答案:

答案 0 :(得分:5)

您应该使用encodeURIComponent对其进行两次编码,即encodeURIComponent(encodeURIComponent(current_plink))。如果你只对它进行一次编码,那么服务器就会对它进行解码,而且根本不对它进行编码。

答案 1 :(得分:1)

我的网址也有类似的问题,

?filters=new:item:text

需要逃脱冒号的地方。为此,我尝试将其格式化 ?filters/:items/:text,但是由于Chrome浏览器未对'/'值进行编码,因此无法正常工作。

尝试了js [escape() method][1] ,它的工作原理很吸引人。

let url = 'https://dev.test.something?filters=';
let filterString = 'new:item:text';
url = url + escape(filterString);

输出:

https://dev.test.something?filters=new%3Aitem%3Atext

希望这对您有所帮助!

答案 2 :(得分:0)