【问题标题】:Why does %20 become %2520 when I use a redirected url?为什么当我使用重定向 url 时 %20 会变成 %2520?
【发布时间】:2020-02-11 00:00:29
【问题描述】:

这按预期工作 - 它返回一条记录:

https://terraref.ncsa.illinois.edu/bety/api/v1/search.json?sitename=~Season%204&limit=1

这不是

当我使用基本网址 terraref.org 而不是 terraref.ncsa.illinois.edu 时:

https://terraref.org/bety/api/v1/search.json?sitename=~Season%204&limit=1

因为在第二种情况下,%%25 替换,然后找不到查询词。

问题

  • 我该如何解决?
  • 为什么最近几个月出现这种情况并且

更新

您可以查看与我正在使用的 R 包相关的红鲱鱼的问题历史记录 感谢 cmets,我认为我已经缩小了问题的范围

我已经包含了标签 ruby​​-on-rails 和 nginx,因为这些是 api 和服务器正在使用的工具。

【问题讨论】:

  • urlencoding 可能吗?
  • @cory 不确定这是否是您的意思,但URLencode('Foo%20Bar') 返回Foo%20Bar
  • %20 是空间代码,%25 是 %
  • @user2864740 我已经完成了;从字符串中删除 25 使其按预期工作
  • 那么,如果不是传递"Test 1",而是传递URLencode("Test 1")... 是否有效?

标签: ruby-on-rails nginx https


【解决方案1】:

检查 Chrome DevTools 以调试问题。

正在使用以下查询参数重定向您的呼叫。

sitename: ~Season 4
limit: 1

如果您选择编码视图,您将看到罪魁祸首。

所以,正如人们所预料的那样,它就像双 url 编码一样简单。

如果您需要使用terraref.org 作为基本网址,请将空格替换为加号。

https://terraref.org/bety/api/v1/search.json?sitename=~Season+4&limit=1

【讨论】:

  • @David LeBauer 如果您对有关空间/加号解决方案的更多理由感兴趣,请查看this惊人的答案。
【解决方案2】:

不知何故,您将 sitename 的值编码了 2 次。在这个例子中,当你第一次编码Season%204并第二次编码%20Season%25204时,解码的值为Season 4

检查代码以验证 sitename 的值是否已经编码,并且您再次编码。

【讨论】:

    猜你喜欢
    • 2017-01-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-12-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多