Я пытаюсь сделать запрос PUT с помощью jQuery для отправки формы, которая должна создать новый ресурс REST на сервере, который возвращает 201 Created с заголовком Location, указывающим на вновь созданный ресурс. Вот код coffeescript, который должен обрабатывать запрос:
createNewGame = (name) ->
$.ajax({
url: "/games",
type: "PUT",
data: { game: name },
dataType: "json",
success: succ,
error: err})
Я вижу, что запрос отправлен и получен с правильным состоянием и установленным заголовком Location, но тогда ничего не происходит:
Ответ:
Server Warp/0.4.5
Set-Cookie Game=game123; HttpOnly
Location http://localhost:5678/resources/html/game.html
Content-Type application/json
Transfer-Encoding chunked
Запрос:
Host localhost:5678
User-Agent Mozilla/5.0 (X11; Linux x86_64; rv:7.0.1) Gecko/20100101 Firefox/7.0.1
Accept application/json, text/javascript, */*; q=0.01
Accept-Language en,en-us;q=0.8,fr;q=0.5,fr-fr;q=0.3
Accept-Encoding gzip, deflate
Accept-Charset ISO-8859-1,utf-8;q=0.7,*;q=0.7
Connection keep-alive
Content-Type application/x-www-form-urlencoded; charset=UTF-8
X-Requested-With XMLHttpRequest
Referer http://localhost:5678/resources/html/index.html
Content-Length 12
Если я использую ответ 302, тогда jQuery следует за заголовком Location ответа, но тогда как я должен сказать странице, чтобы загрузить страницу, указанную в ответе? Конечно, я мог бы использовать другой механизм (например, запрос POST), и я знаю, что мой запрос не соответствует REST, поскольку URL-адрес запроса должен указывать на конкретный ресурс, но я хотел бы лучше понять проблему, как мне кажется PUT является правильным глаголом здесь (я могу создать на стороне клиента URI для ресурса, который нужно создать).
Спасибо, что ответили.