Заголовок XMLHttpRequest If-None-Match в публикации - PullRequest
0 голосов
/ 12 марта 2019

У меня на локальном хосте запущено загрузочное приложение Spring со следующим контроллером:

@RestController
public class EtagController {


    @GetMapping("/eTag")
    public ResponseEntity<String> onGet() {
        HttpHeaders headers = new HttpHeaders();
        headers.set("ETag", UUID.randomUUID().toString());

        return new ResponseEntity<>("", headers, HttpStatus.OK);
    }

    @PostMapping("/eTag")
    public ResponseEntity<String> onPost() {
        HttpHeaders headers = new HttpHeaders();
        headers.set("ETag", UUID.randomUUID().toString());

        return new ResponseEntity<>("", headers, HttpStatus.OK);
    }

}

И в браузере работает следующий html / javascript:

<!DOCTYPE html>
<html>
<head>
    <title>Page Title</title>
</head>
<body>
<script>
    function onGet() {
        var xhr = new XMLHttpRequest()
        xhr.onreadystatechange = function() {
            if (xhr.readyState === 4 && xhr.status === 200) {
                console.log('Success');
            }
        }

        xhr.onerror = function() {
            console.log('Failure');
        }

        xhr.open('Get', 'http://127.0.0.1:8080/eTag', true)
        xhr.send()
    }

    function onPost() {
        var xhr = new XMLHttpRequest()
        xhr.onreadystatechange = function() {
            if (xhr.readyState === 4 && xhr.status === 200) {
                console.log('Success');
            }
        }

        xhr.onerror = function() {
            console.log('Failure');
        }

        xhr.open('Post', 'http://127.0.0.1:8080/eTag', true)
        xhr.send()
    }
</script>

<button id="get" onclick="onGet()">Do Get</button>
<button id="post" onclick="onPost()">Do Post</button>
</body>
</html>

Когда я делаюGet запросов, следующих за первоначальным запросом, заголовок If-None-Match включен, но он не включается, когда я выполняю Post запросов даже после первого запроса.Насколько я могу судить, в spec нет ничего, что предполагало бы, что ETags и If-None-Match являются исключительными для Get.Нужно ли самому добавлять заголовок или есть какой-то способ применить это в запросе Post?Если так, как я могу получить доступ к кэшированному Etag?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...