【问题标题】:Canonicalizing URLs using XMLHttpRequest?使用 XMLHttpRequest 规范化 URL?
【发布时间】:2012-12-26 19:31:47
【问题描述】:

根据AJAX redirect dilemma, how to get redirect URL OR how to set properties for redirect request,似乎无法查明何时发生 HTTP 重定向,也无法查明浏览器重定向到的目标 URL。

因此,如何以可靠的方式比较两个 URL?例如,我的代码比较了两个 URL:

http://example.com/users/joe@home.com/http://example.com/users/53/

这两者实际上指的是同一个用户(第一个请求使用HTTP 303 重定向到第二个请求)但浏览器似乎没有办法发现这一点,因此它错误地认为这两个用户不同。

从技术上讲,资源表示可以包含其规范 URI,但如果可能,我想避免这种变通办法/黑客。有什么想法吗?

【问题讨论】:

  • 最终要做什么?当然,如果 URI 的路径不同,它们就是两个不同的资源。那么你到底想达到什么目的呢?
  • @DanMan,你错了。 URI 可能不同,但它们引用相同的资源。这就是 URI 规范化的全部意义所在。 URI 标识对于缓存目的以及某些业务逻辑至关重要。例如,客户端想要对除自身之外的所有用户调用操作。如果它不能比较用户,它就不能将自己排除在处理之外。
  • 如果每样东西都有它自己的、唯一的地址,你就不必考虑这个了。如果第二个 URI 是首选 URI,则应使用状态 301 重定向。
  • @DanMan,URI 规范化和使用状态 303 有充分的理由。我无法在此处详细介绍,但如果您阅读 RESTful Web Services,它们会得到详细解释。跨度>

标签: rest xmlhttprequest http-redirect


【解决方案1】:

我最终将规范 URI 作为响应正文的一部分返回。这是一个丑陋的黑客,但似乎没有人有任何其他想法。

欢迎投稿!随时发布新的答案,我会考虑的。

更新:W3C 正在https://www.w3.org/Bugs/Public/show_bug.cgi?id=15417讨论解决这个问题

【讨论】:

    猜你喜欢
    • 2012-05-22
    • 2020-10-11
    • 2020-06-16
    • 1970-01-01
    • 1970-01-01
    • 2017-06-30
    • 2013-07-14
    • 2012-03-07
    相关资源
    最近更新 更多