【问题标题】:Should HTTP redirects be used to correct misleading URL's是否应该使用 HTTP 重定向来纠正误导性 URL
【发布时间】:2015-02-15 18:27:59
【问题描述】:

我在 MVC 控制器中有一些逻辑,这可能会导致 URL 参数被忽略,从而导致 URL 可能具有误导性

作为说明:

如果控制器中的 GET 处理程序逻辑针对以下 URL:

http://example.com/results?sortByField=10&search=full&locationId=1

忽略 sortByField 的值并使用其他参数类型计算值

例如

   if (search="full" && locationId = 1)
   then
     //sort results by field 1
   else 
     //sort results by sortByField paramater

这意味着 URL 暗示结果按字段 10 排序,而实际排序字段为 1。

对此的一种解决方案是执行 302 重定向到在上面的 if 语句中修改为 sortByField=1 的原始 URL。这将导致一个干净的 URL,它反映了页面的行为,但会导致额外的往返,而且似乎也不完全符合 302 重定向的定义。

任何关于这是否重要的​​想法以及使用重定向的利弊表示赞赏。

【问题讨论】:

    标签: http url redirect


    【解决方案1】:

    如果您要规范化 URL,则 301 是要使用的状态代码。已请求的客户:

    http://example.com/results?sortByField=10&search=full&locationId=1
    

    并被重定向到:

    http://example.com/results?sortByField=1&search=full&locationId=1
    

    以后应始终使用第二个 URL。

    关于这是否重要的​​任何想法

    如果您希望您的客户检查他们正在使用的 URL,那么这是一种自我记录的好方法。缓存也有好处。

    这当然是 REST 完全有效的;额外的往返是否值得真的取决于您正在运行的网站的性能问题。

    【讨论】:

    • 感谢 cmets。我提出了 302,因为它是决定覆盖 sortByField 参数的内部实现,并且这个可能在未来发生变化。
    猜你喜欢
    • 1970-01-01
    • 2014-06-19
    • 1970-01-01
    • 1970-01-01
    • 2013-07-30
    • 1970-01-01
    • 2010-10-03
    • 1970-01-01
    • 2016-06-24
    相关资源
    最近更新 更多