2016-06-30 4 views
0

У меня есть сайт ASP.NET. Пользователь может получить доступ к URL/partners/{partner-id} в моем приложении. Когда этот URL-адрес вызывается, я делаю две вещи:Код статуса перенаправления HTTP

1) Я хочу зарегистрировать идентификатор партнера и пользователя, который его запросил, и 2) Перенаправить URL-адрес на веб-сайт партнера.

Мой вопрос в том, какой код статуса HTTP я должен использовать? Я использовал 301. Однако это привело к проблеме, когда мой код регистрации пропускался. Я подозреваю, потому что 301 представляет собой постоянную переадресацию. Тем не менее, я в основном хочу оставаться средним человеком, чтобы я правильно регистрировал детали.

Какой код состояния HTTP я должен использовать?

Спасибо!

ответ

0

Взглянув здесь:

https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html

вы должны использовать код 302 состояния. Две полезных точек о 302 редиректе:

Так как переадресация может быть изменена в любой момент, клиенту следует продолжать использовать Request-URI для будущих запросов

Это говорит по выводя, что перенаправление может быть временным, клиенты всегда должны проверять исходный URI, а не переходить на URI перенаправления в качестве поведения по умолчанию, то есть они будут проходить через вашу систему ведения журнала каждый раз, а не переходить непосредственно к перенаправленному URI при последующих запросах. В ответе 302 также указывается:

Этот ответ может быть кешируемый только в том случае, если указано полем Cache-Control или Expires.

По умолчанию перенаправление 301 кэшируется, если вы явно не указали, но 302 не кэшируется, если явно не указано. Однако, вероятно, неплохо было бы явно добавить заголовки «не кэшировать» в перенаправление, чтобы клиент знал, что его нельзя кэшировать на случай, если у вас есть клиент, который не соблюдает поведение спецификации по умолчанию. Есть несколько других ответов в stackoverflow относительно этого, вот и достойный:

How to control web page caching, across all browsers?

Смежные вопросы