gpt4 book ai didi

url - 为什么即使参数不是 URL 编码的,某些查询字符串也能工作?

转载 作者:行者123 更新时间:2023-12-03 23:14:49 24 4
gpt4 key购买 nike

下面是一个例子:

https://drive.google.com/viewerng/viewer?embedded=true&url=http://journals.plos.org/plosone/s/file?id=wjVg/PLOSOne_formatting_sample_main_body.pdf


url参数, http://journals.plos.org/plosone/s/file?id=wjVg/PLOSOne_formatting_sample_main_body.pdf , 未编码。它包含保留字符,如冒号、斜线和问号。

为什么这仍然有效?如果没有它就可以工作,为什么还要麻烦编码呢?

最佳答案

reserved characters URI 的大部分用作分隔符——这并不意味着它们可能不被使用,这仅意味着它们具有特殊用途,如果您不需要它们用于此目的,则必须进行百分比编码他们。
查询组件从第一个 ? 开始并以第一个 # 结束(如果有,否则以 URI 结尾)。对于查询组件本身,没有定义保留字符。
URI 标准 RFC 3986 defines查询组件可以包含以下字符:

  • a - z , A - Z
  • 0 - 9
  • / ? : @ ! $ & ' ( ) * + , ; = - . _ ~
  • 百分比编码字符

  • 它甚至明确提到:

    The characters slash ("/") and question mark ("?") may represent data within the query component.



    您的示例 URI 的查询组件是这样的:
    embedded=true&url=http://journals.plos.org/plosone/s/file?id=wjVg/PLOSOne_formatting_sample_main_body.pdf
    除了字母,它还包含 = , & , : , / , . , ? , _ ,所有这些都在查询中被允许。
    请注意 name=value查询组件 is just a convention 中的格式(由 & 分隔) , 不是规范中定义的东西。

    关于url - 为什么即使参数不是 URL 编码的,某些查询字符串也能工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38809739/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com