如何转义 URL 参数中的斜线

新手上路,请多包涵
$.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) {

如果我尝试发送包含斜杠的参数,它会返回未找到的页面。 在此处输入图像描述

但是如果我尝试发送不包含斜杠的参数,它会返回 OK。 在此处输入图像描述

原文由 Levent Tulun 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 1.4k
2 个回答

您应该使用 encodeURIComponent 对它进行两次编码,即 encodeURIComponent(encodeURIComponent(current_plink)) 。如果你只编码一次,服务器会解码它,这和根本不编码是一样的。

原文由 Michał Perłakowski 发布,翻译遵循 CC BY-SA 3.0 许可协议

我也有类似的 url 问题,例如:

 ?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

希望这会有所帮助!

原文由 Kailas 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
logo
Stack Overflow 翻译
子站问答
访问
宣传栏