我有路线Get["/{url}/{printer}"]
如果我将此网址发送到 Chrome 一切正常localhost:8888/yandex.ru/HP Universal Printing PCL 6
然后我尝试发送这个 url,但路由不起作用。
localhost:8888/http://www.yandex.ru/HP Universal Printing PCL 6
我也尝试HttpUtility.UrlEncode("http://www.yandex.ru"); 但它也不起作用。
localhost:8888/http%3a%2f%2fwww.yandex.ru/HP Universal Printing PCL 6
404 - 未找到
找不到您请求的资源。
我们很抱歉 :-(
问题模板存在是有原因的。 它要求您填写详细信息,例如您使用的版本、运行的主机等,因此我们不必填写。
但在这里我们...问; 您使用的是什么主机和什么版本? :stuck_out_tongue_closed_eyes:
@Radzhab http://stackoverflow.com/questions/39785864/how-pass-url-params-to-route还有一个重复的堆栈溢出问题
这看起来像旧的“两次解码”?
双重编码可以解决这个问题:
localhost:8888/http://www.yandex.ru/HP Universal Printing PCL 6
当它没有被编码,或者被编码(一次)时,URL 被解码并最终在//
上被分割。
我用的是1.4.1.0版本
还有主持人?
https://gist.github.com/Radzhab/46abc95cdfe4b018ad3c9a8dae7003ca
南希.dll 1.4.1
南希.Hosting.Self.dll 1.4.1
Mono.Posix.dll 4.0.0
是的,这可能是影响自托管的双重解码问题。 这已在https://github.com/NancyFx/Nancy/pull/2462中修复
您要么必须更新到 2.0 预发布版本之一,要么对传入的值进行双重编码 :cry:
我安装了预发行版,但都是一样的 - 不起作用..我试试这个网址
本地主机:8888/https%3A%2F%2Fwww.google.com%2F2
和本地主机:8888/https%3A%2F%2Fwww.google.com/F2
所以双重编码对你不起作用@Radzhab? 嗯,应该是因为我们只解码了一次路由。 真奇怪。
今晚我有一些空闲时间,所以我会尝试重现此内容,看看是否有快速解决方法来解除对您的阻止。
更新.......
最有用的评论
所以双重编码对你不起作用@Radzhab? 嗯,应该是因为我们只解码了一次路由。 真奇怪。
今晚我有一些空闲时间,所以我会尝试重现此内容,看看是否有快速解决方法来解除对您的阻止。