URL 包含 % 符号时出现 400 代码错误? (NGINX)
400 code error when URL contains % symbol? (NGINX)
如何使用 NGINX 服务器在 URL 包含 %
符号时防止服务器返回 error 400
代码错误?
我网站的 Nginx 配置:
....
rewrite ^/download/(.+)$ /download.php?id= last;
....
当我试图访问此 URL 时:
http://mywebsite.net/download/some-string-100%-for-example
我收到此错误:
400 Bad Request
有了这个 url :
http://mywebsite.net/download/some-string-%25-for-example
一切正常!
因为需要先URL编码
这将解释:
http://www.w3schools.com/tags/ref_urlencode.asp
URLs can only be sent over the Internet using the ASCII character-set.
Since URLs often contain characters outside the ASCII set, the URL has to be converted into a valid ASCII format.
URL encoding replaces unsafe ASCII characters with a "%" followed by two hexadecimal digits.
URLs cannot contain spaces. URL encoding normally replaces a space with a plus (+) sign or with %20.
URL 解释器看到后面没有十六进制的 %
感到困惑。
为什么会想到通过更改Nginx配置来解决???
服务器端无法解决。是客户端的问题。
https://headteacherofgreenfield.wordpress.com/2016/03/23/100-celebrations/
在 URL 中,标题是 100% Celebrations!
,但永久链接自动生成到 100-celebrations
。这是因为他们知道输入 100%
会导致 URL 编码问题。
如果连 Wordpress 都不按照您的方式来做,那您为什么要这样做?
如何使用 NGINX 服务器在 URL 包含 %
符号时防止服务器返回 error 400
代码错误?
我网站的 Nginx 配置:
....
rewrite ^/download/(.+)$ /download.php?id= last;
....
当我试图访问此 URL 时: http://mywebsite.net/download/some-string-100%-for-example 我收到此错误:
400 Bad Request
有了这个 url : http://mywebsite.net/download/some-string-%25-for-example 一切正常!
因为需要先URL编码
这将解释: http://www.w3schools.com/tags/ref_urlencode.asp
URLs can only be sent over the Internet using the ASCII character-set.
Since URLs often contain characters outside the ASCII set, the URL has to be converted into a valid ASCII format.
URL encoding replaces unsafe ASCII characters with a "%" followed by two hexadecimal digits. URLs cannot contain spaces. URL encoding normally replaces a space with a plus (+) sign or with %20.
URL 解释器看到后面没有十六进制的 %
感到困惑。
为什么会想到通过更改Nginx配置来解决???
服务器端无法解决。是客户端的问题。
https://headteacherofgreenfield.wordpress.com/2016/03/23/100-celebrations/
在 URL 中,标题是 100% Celebrations!
,但永久链接自动生成到 100-celebrations
。这是因为他们知道输入 100%
会导致 URL 编码问题。
如果连 Wordpress 都不按照您的方式来做,那您为什么要这样做?