HTTP 重定向状态代码
HTTP Redirect Status Code
我有一个 ASP.NET 网站。用户可以在我的应用程序中访问 URL /partners/{partner-id} 。当 url 被调用时,我做了两件事:
1) 我想记录请求它的合作伙伴 ID 和用户,以及
2) 将 url 重定向到合作伙伴的网站。
我的问题是,我应该使用哪个 HTTP 状态代码?我使用的是 301。但是,这引入了一个问题,我的日志记录代码被跳过了。我怀疑是因为 301 代表永久重定向。但是,我基本上想保留中间人,以便我正确记录详细信息。
我应该使用什么 HTTP 状态代码?
谢谢!
看这里:
https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html
你应该使用 302 状态码。关于 302 重定向的两个有用的要点:
Since the redirection might be altered on occasion, the client SHOULD
continue to use the Request-URI for future requests
这表示通过推断重定向可能是临时的,客户端应该始终检查初始 URI,而不是默认行为转到重定向 URI,这意味着它们每次都会通过您的日志系统,而不是直接转到后续请求的重定向 URI。 302 响应还指出:
This response is only cacheable if indicated by a Cache-Control or
Expires header field.
默认情况下,除非您明确指定,否则 301 重定向是可缓存的,但除非明确指定,否则 302 是不可缓存的。
但是,明确添加 'do not cache' headers 到重定向可能是个好主意,让客户端知道它不应该被缓存,以防万一您的客户端不遵循默认规范行为。关于这个问题,Whosebug 中还有许多其他答案,这里有一个不错的答案:
我有一个 ASP.NET 网站。用户可以在我的应用程序中访问 URL /partners/{partner-id} 。当 url 被调用时,我做了两件事:
1) 我想记录请求它的合作伙伴 ID 和用户,以及 2) 将 url 重定向到合作伙伴的网站。
我的问题是,我应该使用哪个 HTTP 状态代码?我使用的是 301。但是,这引入了一个问题,我的日志记录代码被跳过了。我怀疑是因为 301 代表永久重定向。但是,我基本上想保留中间人,以便我正确记录详细信息。
我应该使用什么 HTTP 状态代码?
谢谢!
看这里:
https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html
你应该使用 302 状态码。关于 302 重定向的两个有用的要点:
Since the redirection might be altered on occasion, the client SHOULD continue to use the Request-URI for future requests
这表示通过推断重定向可能是临时的,客户端应该始终检查初始 URI,而不是默认行为转到重定向 URI,这意味着它们每次都会通过您的日志系统,而不是直接转到后续请求的重定向 URI。 302 响应还指出:
This response is only cacheable if indicated by a Cache-Control or Expires header field.
默认情况下,除非您明确指定,否则 301 重定向是可缓存的,但除非明确指定,否则 302 是不可缓存的。 但是,明确添加 'do not cache' headers 到重定向可能是个好主意,让客户端知道它不应该被缓存,以防万一您的客户端不遵循默认规范行为。关于这个问题,Whosebug 中还有许多其他答案,这里有一个不错的答案: