AngularJS делает это правильно, поскольку делает следующий контент-тип внутри заголовка http-запроса:
Content-Type: application/json
Если вы собираетесь с php, как я, или даже с Symfony2, вы можете просто расширить ваша совместимость с сервером для стандартного json, как описано здесь: http://silex.sensiolabs.org/doc/cookbook/json_request_body.html
Способ Symfony2 (например, внутри вашего DefaultController ):
$request = $this->getRequest();
if (0 === strpos($request->headers->get('Content-Type'), 'application/json')) {
$data = json_decode($request->getContent(), true);
$request->request->replace(is_array($data) ? $data : array());
}
var_dump($request->request->all());
Преимущество заключалось бы в том, что вам не нужно использовать параметр jQuery, и вы можете использовать AngularJS свой собственный способ выполнения таких запросов.
Завершающий тег является произвольной строкой, которую сервер отправляет клиенту, который клиент передаст обратно серверу в следующий раз, когда файл требуют.
завершающий тег должен быть вычислимым на сервере на основе файла. Вид подобных контрольная сумма, но Вы не могли бы хотеть к контрольной сумме каждый файл, отсылающий его.
server client
<------------- request file foo
file foo etag: "xyz" -------->
<------------- request file foo
etag: "xyz" (what the server just sent)
(the etag is the same, so the server can send a 304)
я создал строку в формате "файл inode число/метка даты/размер файла". Так, если файл будет изменен на сервере после того, как это было роздано клиенту, недавно повторно созданный завершающий тег не будет соответствовать, если клиент повторно запросит его.
char *mketag(char *s, struct stat *sb) { sprintf(s, "%d/%d/%d", sb->st_ino, sb->st_mtime, sb->st_size); return s; }
Пока это изменяется каждый раз, когда представление ресурса изменяется, как Вы производите его, полностью ваше дело.
необходимо попытаться произвести его способом что дополнительно:
Используя хеши содержания, может заставить Вас перестать работать в № 1, если Вы не храните вычисленные хеши наряду с файлами.
Используя inode числа может заставить Вас перестать работать в № 2, если Вы перестраиваете свою файловую систему, или Вы служите содержанию с нескольких серверов.
Один механизм, который может работать, должен использовать что-то совершенно довольное зависимый, такой как хеш SHA-1 или строка версии, вычисленная и сохраненная однажды каждый раз, когда Ваше содержание ресурса изменяется.
От http://developer.yahoo.com/performance/rules.html#etags :
По умолчанию, и Apache и IIS встраивают данные в Завершающий тег, который существенно уменьшает разногласия теста законности, успешно выполняющегося на веб-сайтах с несколькими серверами.
...
, Если Вы не используете в своих интересах гибкую модель проверки, которую предоставляют Завершающие теги, лучше просто удалить Завершающий тег в целом.
Я рекомендовал бы не использовать их и идти для измененных в последний раз заголовков вместо этого.
Askapache имеет полезную статью об этом. (поскольку они делают в значительной степени все, чем это кажется!)