REST:http代码300在这种重定向情况下是否合适?

Mic*_*oka 5 rest http-status-codes

我有一个多语言环境的网站.我需要在用户访问站点时将用户重定向到他们的语言环境而不使用url中的语言环境代码.

例如

http://www.mysite.com会 自动重定向到http://www.mysite.com/ukhttp://www.mysite.com/us

我正在看rfc2616而且我在使用Code 300(多种选择)时犹豫不决:

所请求的资源对应于一组表示中的任何一个,每个表示具有其自己的特定位置,并且正在提供代理驱动的协商信息(部分12),以便用户(或用户代理)可以选择优选表示并重定向其请求到该位置.

除非是HEAD请求,否则响应应该包括一个实体,其中包含资源特征和位置列表,用户或用户代理可以从中选择最合适的资源特征和位置.实体格式由Content-Type头字段中给出的媒体类型指定.

根据用户代理的格式和功能,可以自动选择最合适的选择.但是,该规范没有为这种自动选择定义任何标准.

如果服务器具有首选的表示选择,则它应该在Location字段中包含该表示的特定URI;

我想我理解,但措辞仍然让我有点神秘.熟悉响应代码的人是否可以确认我是否在正确的轨道上并解释以下摘录?

  • [...]正在提供[...]代理商驱动的谈判信息[...]
  • 除非是HEAD请求,否则响应应该包括一个包含资源特征和位置列表的实体[...]
  • Dar*_*ler 1

    就您而言,我认为您不需要“代理驱动的谈判”。在您的情况下,您的服务器应该能够从 Accept-lang 标头中选择重定向位置。我认为你可以使用 303 重定向。

    仅当服务器不知道客户端想要什么表示时,才使用代理驱动的协商。在这些情况下,服务器将返回包含不同可用选项的链接列表。然后代理将选择它想要的代表。

    如果您想要一些 javascript 代码来处理 300 响应并向用户显示选项列表以便用户可以选择所需的语言,您可以使用代理驱动的协商。