Аналогія responses html. Божевільні форми

21.12.2021

Переклад: Влад Мержевич

Кожен знає про веб-форми, чи не так? Вставляємо тег, кілька, можливо, завершуємо це все кнопкою і готове.

Ви не знаєте й половини про це. HTML5 визначає більше десяти нових типів полів, які ви можете використовувати у своїх формах. І коли я говорю «використовувати», я маю на увазі, що їх можна використовувати прямо зараз - без будь-яких прокладок, хаків або обхідних шляхів. Не хвилюйтеся сильно, я не хочу сказати, що всі нові захоплюючі можливості насправді підтримуються в будь-якому браузері. Цілком ні, я не маю на увазі, що всіма. У сучасних браузерах, так, ваші форми покажуть все, на що вони здатні. Але в старих браузерах ваші форми, як і раніше, працюватимуть, хоча і не в повній мірі. Тобто ці можливості елегантно деградують у кожному браузері. Навіть у IE6.

Підказуючий текст Підтримка тексту, що підказує
IE Firefox Safari Chrome Opera iPhone Android
- 4.0+ 4.0+ 4.0+ 11.0+ 4.0+ -

Перше поліпшення HTML5 щодо форм це можливість встановлення тексту, що підказує, у полі введення. Такий текст відображається в полі введення, якщо поле порожнє і не має фокусу. Як тільки ви клацніть в полі введення (або перейдете до нього через Tab) підказуючий текст зникає.

Ви, напевно, бачили текст, що підказує раніше. Наприклад, Mozilla Firefox включає текст, що підказує, в адресному рядку з написом «Пошук в закладках і журналі».

Коли ви клацаєте по адресному рядку, текст, що підказує, зникає.

Ось як ви можете включити текст, що підказує, у свої форми.




Браузери, які не підтримують атрибут placeholder, його просто ігнорують. Без шкоди та порушень.

Запитай професора Маркапа

☞ В. Чи можу я використовувати HTML розмітку для атрибута placeholder? Я хочу вставити картинку або, може, змінити кольори.

В. Атрибут placeholder може містити тільки текст, не HTML-код. Однак є спеціальні розширення CSS, які дозволяють встановити стиль тексту в деяких браузерах.

Поля з автофокусом Підтримка автофокусу
IE Firefox Safari Chrome Opera iPhone Android
- - 4.0+ 3.0+ 10.0+ - -

Сайти можуть використовувати JavaScript для автоматичного отримання фокусу у першому полі форми. Наприклад, на головній сторінці Google.comавтофокус має поле для введення пошукових ключових слів. Хоча це і зручно для більшості людей, але може дратувати досвідчених користувачів та людей з особливими потребами. Якщо ви натиснете пробіл в очікуванні прокручування сторінки, прокручування не буде, тому що фокус знаходиться в полі введення форми (набиратиметься пробіл в поле замість прокручування). Якщо ви перевели фокус на інше поле введення, поки сторінка завантажується, скрипт автофокусу на сайті може «послужливо» перемістити фокус назад на вихідне поле введення, перериваючи ваш набір і змушуючи вводити текст у неправильному місці.

Оскільки автофокус працює через JavaScript, можуть бути складнощі для обробки цих крайніх варіантів і мало можливостей для тих людей, які не хочуть, щоб веб-сторінка викрадала їх фокус.

Для вирішення цих проблем HTML5 вводить атрибут autofocus для всіх елементів форм. Атрибут autofocus робить саме те, як і звучить: щойно сторінка завантажується, переміщує фокус у вказане поле. Але оскільки це лише розмітка, а не сценарій, поведінка буде постійною для всіх сайтів. Крім того, виробники браузерів (або автори розширень) можуть запропонувати користувачам спосіб вимкнути автофокус.

Ось як ви можете встановити поле форми з автофокусом.




Браузери, які не підтримують атрибут autofocus, його ігноруватимуть.

Що таке? Кажете, що бажаєте, щоб автофокус працював скрізь, а не тільки у химерних HTML5-браузерах? Ви можете залишити поточний скрипт з автофокусом, просто зробіть дві невеликі зміни:

  • додайте атрибут autofocus у код HTML;
  • перевірте, чи підтримує браузер атрибут autofocus , і якщо ні, запустіть свій скрипт.

Автофокус із альтернативою




if (!("autofocus" in document.createElement("input")) ) (
document.getElementById("q").focus();
}


Встановлюйте фокус якомога раніше

Багато веб-сторінок чекають, поки спрацює window.onload і встановлюють фокус. Але подія window.onload не спрацює, доки всі зображення не завантажаться. Якщо на вашій сторінці багато зображень, такі наївні скрипти потенційно змінять фокус після того, як користувач почав взаємодіяти з іншою частиною вашої сторінки. Ось чому досвідчені користувачі ненавидять скрипти автофокусування.

Наприклад, у попередньому розділі скрипт автофокусу розміщений відразу після поля форми, на яку він посилається. Це оптимальне рішення, але воно може образити ваші почуття, ставити блок коду JavaScript в середині сторінки (або більш приземлено, ваша система може бути не настільки гнучкою). Якщо ви не можете вставити скрипт у середині сторінки, ви повинні встановити фокус через подію користувача, як $(document).ready() в jQuery замість window.onload .

Автофокус через jQuery




$(document).ready(function() (

$("#q").focus();
}
});






Подія користувача jQuery спрацьовує, як тільки DOM доступний - тобто чекає, поки завантажиться текст сторінки, але не чекає, поки всі зображення завантажаться. Це не оптимальний підхід - якщо сторінка незвичайно велика або мережне з'єднання повільне, користувач може, як і раніше, взаємодіяти зі сторінкою перед тим, як виконається скрипт з фокусом. Але все ж таки це набагато краще, ніж чекати, поки відбудеться подія window.onload .

Якщо ви згодні і готові вставити скрипт з одним оператором у код вашої сторінки, це компроміс, який менш неприємний, ніж перший варіант і краще, ніж другий. Ви можете використовувати події користувача jQuery для завдання власних подій, скажімо autofocus_ready. Тоді ви можете викликати цю подію вручну відразу після доступності поля з автофокусом. Дякую Е. М. Штенбергу за навчання мене цій техніці.

Автофокус з альтернативною користувальницькою подією




$(document).bind("autofocus_ready", function() (
if (!("autofocus" in document.createElement("input"))) (
$("#q").focus();
}
});





$(document).trigger("autofocus_ready");

Це рішення оптимальне, як перший підхід. Фокус буде встановлений у полі форми, як тільки це стане технічно можливо, в той час як текст сторінки все ще вантажиться. Частину логіки програми (фокус у полі форми) перенесено з тіла сторінки до розділу . Цей приклад заснований на jQuery, але концепція для користувачів подій не є унікальною для jQuery. Інші JavaScript-бібліотеки на кшталт YUI та Dojo пропонує аналогічні можливості.

Підведемо підсумки.

  • Це правильне встановлення фокуса.
  • Якщо це можливо, нехай браузер використовує атрибут autofocus у полі, де ви бажаєте фокус.
  • Якщо ви використовуєте альтернативний код для старих браузерів, визначте підтримку атрибута autofocus, щоб скрипт виконувався лише у старих браузерах.
  • Встановлюйте фокус якомога раніше. Вставте скрипт з фокусом у код відразу після поля форми. Якщо це не зачіпає вас, вставте JavaScript-бібліотеку, яка підтримує події користувача, і викликайте подію в коді відразу ж після поля форми. Якщо це неможливо, використовуйте подію на зразок $(document).ready() з jQuery.
  • За жодних обставин не чекайте, поки window.onload встановить фокус.
Адреси електронної пошти

Вже понад десять років форми містять лише кілька видів полів. Найбільш поширені такі.

Всі ці типи полів, як і раніше, працюють у HTML5. Якщо ви «оновитеся до HTML5» (можливо зміною !DOCTYPE ), вам не доведеться робити жодних змін у ваших формах. Ура зворотної сумісності!

Однак HTML5 визначає 13 нових типів полів і немає жодних причин не почати їх використовувати.

Першим з цих нових типів є адреса електронної пошти. Виглядає приблизно так.





Я збирався написати пропозицію, яка почалася «в браузерах, які не підтримують type="email"...», але зупинився. Чому? Тому що я не впевнений, що браузери не підтримують type="email" . Всі браузери підтримують type="email" . Вони можуть не робити щось спеціальне, але браузери, які не розпізнають type="email", ставляться до нього як type="text" і відобразяться як звичайне текстове поле.

Я підкреслю, наскільки це важливо. В Інтернеті мільйони форм, які просять ввести адресу електронної пошти та всі з них використовують . Ви бачите текстове поле, вводите свою адресу електронної пошти до нього та все тут. І ось з'являється HTML5, який визначає type = "email". Браузери божеволіють? Ні. Кожен браузер Землі сприймає невідомий атрибут type як type="text" - навіть IE6. Так що ви можете "оновити" ваші форми, використовуючи type="email" прямо зараз.

Що трапиться, якщо скажемо, браузер підтримує type="email"? Ну, це може означати будь-що. Специфікація HTML5 не вимагає будь-якого конкретного інтерфейсу для нових типів полів. Опера доповнює поле форми невеликою іконкою. Інші HTML5-браузери як Safari і Chrome відображають як текстове поле - таке саме, як type="text" - так що ваші користувачі не помітять різницю (поки не подивляться вихідний код).

І ще є iPhone.

iPhone немає фізичної клавіатури. Весь «набір» здійснюється натисканням по екранній клавіатурі, яка спливає у відповідний час, наприклад, коли ви перейшли в поле форми на веб-сторінці. Apple зробив щось хитре у браузері iPhone-а. Він розпізнає деякі нові поля HTML5 та динамічно змінює екранну клавіатуру для оптимізації введення.

Наприклад, адреса електронної пошти це текст, вірно? Звичайно, але це особливий вид тексту. Так, практично всі адреси електронної пошти містять символ @ і принаймні одну точку (.), але вони навряд чи містять пробіл. Тому, коли ви використовуєте iPhone і переходите до елемента , ви отримаєте екранну клавіатуру, яка містить пробіл менше, ніж звичайно, а також виділені клавіші для символів. та @.

Підіб'ю підсумок. Немає жодних недоліків для негайного переведення всіх ваших полів з електронними адресами в type="email" . Практично ніхто цього не помітить, крім користувачів iPhone, які, мабуть, також цього не помітять. Але ті, хто помітять, тихо посміхнуться і подякують вам за те, що їхня робота стала трохи легшою.

Веб-адреси

Веб-адреса - які зубрили стандартів називали URL, за винятком кількох педантів, які називали URI - це ще один тип спеціалізованого тексту. Синтаксис веб-адреси обмежується відповідним Інтернет-стандартом. Якщо хтось просить вас ввести веб-адресу у форму, вона чекає на щось на кшталт «http://www.google.com/», а не «125 Фарвуд Роуд». Косі лінії є спільними - навіть у головної сторінки Google їх три. Крапки також поширені, але прогалини заборонені. І кожна веб-адреса має суфікс домену як ".com" або ".org".

І ось... (барабанний дріб, будь ласка)... . На iPhone це виглядає так.

iPhone змінив свою віртуальну клавіатуру, як це зробив для адреси електронної пошти, але тепер оптимізував її для набору веб-адреси. Пробіл повністю замінений трьома віртуальними клавішами: коса лінія, точка і ".com" (ви можете утримувати клавішу ".com", щоб вибрати інший суфікс на кшталт ".org" або ".net").

Браузери, які не підтримують HTML5, будуть ставитись до type="url" як до type="text" , так що немає недоліків щодо використання цього типу для всіх полів, де потрібно вводити веб-адресу.

Числа як лічильники

Наступний крок: числа. Запит числа складніший, ніж запит адреси електронної пошти або веб-адреси. Насамперед, числа складніші, ніж ви думаєте. Виберіть число швидко. -1? Ні, я мав на увазі число між 1 і 10,7? Ні, ні, не дріб, тупиця. π? Тепер ви просто обрали ірраціональне число.

Хочу зауважити, у вас не часто запитують просто число. Імовірніше, що будуть просити число у певному діапазоні. Ви можете лише захотіти, щоб у межах цього діапазону були певні типи чисел - можливо, цілі числа, але не дроби чи десяткові числа чи щось екзотичніше, наприклад, кратні 10. HTML5 все це охоплює.

Вибрати число, майже будь-яке

Розглянемо по одному атрибуту.

  • type="number" означає, що це числове поле.
  • min="0" вказує мінімально допустиме значення цього поля.
  • max="10" є максимально допустимим значенням.
  • step="2" у поєднанні з мінімальним значенням визначає припустимі числа в діапазоні: 0, 2, 4 і так далі, аж до максимального значення.
  • value="6" значення за промовчанням. Повинний виглядати знайомим, цей атрибут завжди використовується для визначення значень полів форми. Я згадую тут про це для відправної точки, що HTML5 ґрунтується на попередніх версіях HTML. Вам не потрібно переучуватись, щоб робити те, що ви вже робили.

Це код числового поля. Майте на увазі, що всі ці атрибути є необов'язковими. Якщо у вас заданий мінімум, але не максимум, можете вказати атрибут min, але не max. За промовчанням значення кроку дорівнює 1 і ви можете опустити атрибут step , доки не знадобиться інше значення кроку. Якщо немає значення за промовчанням, то атрибут value може бути порожнім рядком або навіть взагалі опущений.

Але HTML5 не зупиняється на досягнутому. За ту саму низьку, низьку ціну свободи ви отримуєте ці зручні методи JavaScript.

  • input.stepUp(n) підвищує значення поля на n.
  • input.stepDown(n) знижує значення поля на n.
  • input.valueAsNumber повертає поточне значення як число з точкою, що плаває (властивість input.value це завжди рядок).

Проблеми із відображенням? Ну, правильний інтерфейс керування числами в браузерах реалізований по-різному. На iPhone, де набір має складнощі, браузер знову оптимізує віртуальну клавіатуру для введення чисел.

У настільній версії Опери поле type="number" відображається як лічильник з невеликими стрілками вгору та вниз, які можна натиснути для зміни значень.

Опера поважає атрибути min, max і step, тому ви завжди досягнете прийнятного числового значення. Якщо ви збільшите значення до максимуму, стрілка вгору в лічильнику стає сірою.

Як і з іншими полями введення, що я обговорював у цьому розділі, браузери, які не підтримують type="number" , будуть ставитися до нього як до type="text" . Значення за замовчуванням буде відображатися в полі (оскільки воно зберігається в атрибуті value ), але інші атрибути, такі як min і max будуть ігноруватися. Ви можете вільно реалізувати їх самостійно або використовувати JavaScript-фреймворк, який вже реалізує керування лічильником. Спочатку перевірте, як тут.

if (! .inputtypes.number) (
// немає вбудованої підтримки для поля type=number
// може спробувати Dojo або інший JavaScript-фреймворк
}

Числа у вигляді повзунка

Лічильник не єдиний спосіб подання введення чисел. Ви, мабуть, також бачили повзунок, що виглядає так.

Тепер ви також можете мати повзунок у формі. Код виглядає дивно схожим на поле лічильника.


Всі доступні атрибути такі ж, як і у type = "number" - min, max, step, value - і означають те саме. Єдина відмінність полягає в інтерфейсі користувача. Замість поля введення, браузери, як очікується, відображають type="range" у вигляді повзунка. На момент написання останні версії Safari, Chrome та Opera працювали з цим. На жаль, iPhone відображає у вигляді простого текстового поля, він навіть не оптимізує свою екранну клавіатуру для введення чисел. Всі інші браузери просто розглядати поле як type="text" , тому немає причин почати використовувати цей тип негайно.

HTML 4 не вмикає вибір дати через календар. JavaScript-фреймворки дозволяють це обійти (Dojo, jQuery UI, YUI, Closure Library), але, звичайно, кожне з цих рішень вимагає «впровадження» фреймворку для будь-якого вбудованого календаря.

HTML5 визначає спосіб включити вбудований вибір дати без будь-яких скриптів. Насправді їх шість: дата, місяць, тиждень, час, дата + час і дата + час з часовим поясом.

Поки що підтримка... мізерна.

Підтримка вибору дати Тип Opera Інші браузери
type="date" 9.0+ -
type="month" 9.0+ -
type="week" 9.0+ -
type="time" 9.0+ -
type="datetime" 9.0+ -
type="datetime-local" 9.0+ -

Ось як Opera відображає:

Якщо вам потрібен час разом з датою, Opera також підтримує:

Якщо вам потрібен місяць плюс рік (наприклад, термін дії кредитної картки), Opera може відобразити:

Менш поширеним, але доступним є вибір тижня на рік через:

Останнє, але не менш важливе, це вибір часу з:

Вибір дати з альтернативою




...

var i = document.createElement("input");
i.setAttribute("type", "date");
if (i.type == "text") (
// Немає вбудованої підтримки вибору дати: (
// Використовуйте Dojo/jQueryUI/YUI/Closure для її створення,
// потім динамічно замініть елемент
}

Ймовірно, інші браузери зрештою підтримуватимуть ці типи. Подібно до type="email" та інших типів, ці поля форми будуть відображатися у вигляді звичайного тексту в тих браузерах, які не розпізнають type="date" та його варіанти. Якщо ви хочете, то можете просто використовувати , чим зробите користувачів Opera щасливими, і зачекайте, поки інші браузери надолужать пропущене. Більш реально це використовувати, але перевірити, чи має браузер вбудовану підтримку вибору дати, і включити альтернативне рішення у вигляді скрипту на ваш вибір (Dojo, jQuery UI, YUI, Closure Library або інші варіанти).

Вікно пошуку

Отже, пошук. Не лише пошук від Google або Yahoo (ну, ті теж). Подумайте про будь-яке вікно пошуку, на будь-якій сторінці, на будь-якому сайті. Амазон має вікно пошуку, Яндекс має вікно пошуку, більшість блогів також. Як вони зроблені?

, як і будь-яке інше текстове поле у ​​мережі. Давайте це виправимо.




Пошук нового покоління

У деяких браузерах ви не помітите жодної відмінності від звичайного текстового поля. Але якщо ви використовуєте Safari на Mac OS X, це буде виглядати так.

Знайшли різницю? Поле введення має закруглені кути! Я знаю, знаю, ви навряд чи можете стримати свої почуття. Але зачекайте, що це ще не все! Коли ви почнете вводити в поле type="search", Safari вставить невелику кнопку «x» з правого боку вікна. Натискання «x» очищає вміст поля. Google Chrome, який має під капотом ту саму технологію, поводиться так само. Обидві ці маленькі хитрощі виглядають і поводяться аналогічно до рідного пошуку в iTunes та інших клієнтських додатках Mac OS X.

Apple.com використовує для пошуку на своєму сайті, щоб допомогти сайту передати «маколюбне» відчуття. Але тут немає нічого специфічного Маків. Це просто код, так що кожен браузер на будь-якій платформі може вибрати, як відображати відповідно до угод платформи. Як і з іншими новими типами, браузери, які не визнають type="search" будуть ставитися до нього як type="text" , так що немає абсолютно ніяких причин не почати використовувати type="search" для всіх ваших вікон пошуку прямо сьогодні .

За замовчуванням Safari не застосовується до більшості стилів. Якщо ви бажаєте змусити Safari розуміти поле для пошуку як звичайне текстове поле (щоб застосувати власні стилі), додайте це правило до таблиці стилів.

input (
-webkit-appearance: textfield;
}

Дякую Джону Лейну за навчання мене цьому трюку.

Вибір кольору

HTML5 також визначає поле , яке дозволяє вибрати колір і повертає його у шістнадцятковому поданні. Жоден браузер не підтримує вибір кольору, що є ганьбою, тому що я завжди любив палітри Mac OS. Може бути коли-небудь.

Прим. перекладача. Opera 11 підтримує цю можливість.

Валідація форм

У цьому розділі я говорив про нові елементи форм і нові можливості, такі як автофокус, але я не згадав, мабуть, найбільш захоплюючу частину форм HTML5: автоматичну перевірку вхідних даних. Розглянемо загальні проблеми введення адреси електронної пошти у вигляді. Ймовірно, у вас є перевірка на стороні клієнта через JavaScript, після чого відбувається перевірка на стороні сервера через PHP, Python або іншу серверну мову. HTML5 ніколи не зможе замінити перевірку на стороні сервера, але він може колись замінити перевірку на стороні клієнта.

Є дві великі проблеми, пов'язані з перевіркою адреси електронної пошти на JavaScript:

  • Деяка кількість відвідувачів (ймовірно, близько 10%) не включають JavaScript.
  • Ви отримаєте адресу неправильно.
  • Серйозно, ви отримаєте адресу неправильно. Визначення того, що набір випадкових символів це коректна адреса електронної пошти неймовірно складна. Чим сильніше ви дивитеся, тим складніше стає. Я вже казав, що це дуже, дуже складно? Чи не простіше повісити цей головний біль на ваш браузер?

    Opera перевіряє type="email"

    Ось скріншот з Opera 11, хоча функціональність присутня з Opera 9. Код включає установку значення email для атрибута type . Коли користувач Опери намагається надіслати форму з , браузер автоматично перевіряє адресу пошти, навіть якщо скрипти вимкнуто.

    HTML5 також пропонує перевірку веб-адрес з полем і чисел з . Перевірка чисел враховує значення атрибутів min і max , тому браузери не дозволять вам надіслати форму, якщо ви вводите занадто велике число.

    Не існує коду, що включає перевірку форм HTML5, це робиться за замовчуванням. Щоб вимкнути перевірку, використовуйте атрибут novalidate .

    Не перевіряй мене




    Браузери повільно включають підтримку перевірки форм HTML5. Firefox 4 матиме повну підтримку. На жаль, Safari та Chrome реалізують лише частково: вони перевіряють елементи форм, але не виводять жодних видимих ​​повідомлень, коли поля форми не проходять перевірку. Іншими словами, якщо ви введете неправильну (або неправильно складену) дату в type = "date", Safari і Chrome не надішле форму, але і не буде говорити вам, чому це не зробили. Вони встановлюватимуть фокус на полі, яке містить неприпустиме значення, але не відображатиме повідомлення про помилку, як Opera або Firefox 4.

    Обов'язкові поля Підтримка
    IE Firefox Safari Chrome Opera iPhone Android
    - 4.0+ - - 9.0+ - -

    Валідація форм HTML5 не обмежується типом кожного поля. Ви також можете вказати, що деякі поля є обов'язковими для заповнення, такі поля повинні мати значення, перш ніж ви зможете відправити форму.

    Код для обов'язкових полів є простим, наскільки це можливо.




    Браузери можуть змінити зовнішній вигляд обов'язкового поля. Ось наприклад, як це виглядає у Mozilla Firefox 4.0.

    Крім того, якщо ви намагаєтеся надіслати форму без заповнення обов'язкового значення, Firefox виведе інформаційну панель, яка каже, що поле є обов'язковим і не може бути порожнім.

    Після отримання і interpretation request message, a server responds with HTTP response message:

    • A Status-line
    • Zero or more header (General|Response|Entity) fields followed by CRLF
    • У empty line (і.
    • Optionally a message-body
    • Наступні розділи викладаються на всіх підприємствах, використовуваних в HTTP response message.

      Message Status-Line

      Статус-література містить протокол версії, що випливає з numerical status code and its associated textual phrase. The elements є separated by space SP characters.

    Status-Line = HTTP-Version SP Status-Code SP Reason-Phrase CRLF HTTP Version

    A server supporting HTTP version 1.1 буде відновити following version information:

    HTTP-Version = HTTP/1.1

    Status Code

    Status-Code element є 3-digit integer, де перша цифра Status-Code defines class of response and the last two digits do not have any categorization role. Існують 5 рівнів для першого дигіту:

    S.N.
    1 Code and Description

    1xx: Informational

    2 Це рішення було прийнято і процес є визнаним.

    2xx: Success

    3 Це рішення було успішно отримано, підпідпис, і прийнято.

    3xx: Redirection

    4 Це означає, що рішення мусить бути прийнято в порядку, щоб розробити запит.

    Це означає, що потреби містяться ввідповідній syntaxі або неможуть fulfilled.

    5 5xx: Server Error

    Це означає, що сервер був схвалений до fulfill, apparently valid request.

    HTTP status codes є extensible і HTTP applications не потрібна для відображення всіх зареєстрованих status codes. List of all status codes has been given in separate chapter for your reference.

    Response Header Fields

    Вони будуть вивчати General-header і Entity-header в окремому розділі, коли будуть розглянуті HTTP header fields. For now, let's check what Response header полів є.

    Відповідь-заголовок полів на сервері пройти додаткову інформацію про відповідь, яка може бути placed в Status-Line. Ці повідомлення повідомлень дають інформацію про сервер і про подальший доступ до ресурсу, identified by the Request-URI.

    • Proxy-Authenticate

    • WWW-Authenticate

    Ви можете ввести ваші custom fields у випадку, якщо ви збираєтеся отримати доступ до свого custom Web Client and Server.

    Examples of Response Message

    Новий рік"виконати це все, щоб формувати HTTP відповідь на відповідь на те, що hello.htm page from the web server running on сайт

    HTTP/1.1 200 OK Дата: Mon, 27 Jul 2009 12:28:53 GMT Server: Apache/2.2.14 (Win32) Last-Modified: Wed, 22 Jul 2009 19:15:56 GMT Content-Length-8 Type: text/html Connection: Closed Hello, World!

    Наступні приклади повідомлень HTTP-повідомлення message displaying error condition when the web server could not find the requested page:

    HTTP/1.1 404 Not Found Date: Sun, 18 Oct 2012 10:36:20 GMT Server: Apache/2.2.14 (Win32) Content-Length: 230 Connection: Назад Content-Type: text/html; charset=iso-8859-1 404 Not Found Not Found

    Requested URL /t.html був невідомий на цьому сервері.

    Наведений is example of HTTP response message showing error condition when the web server encountered a wrong HTTP version in the given HTTP request:

    HTTP/1.1 400 Bad Request Date: Sun, 18 Oct 2012 10:36:20 GMT Server: Apache/2.2.14 (Win32) Content-Length: 230 Content-Type: text/html; charset=iso-8859-1 Connection: Завершено 400 Bad Request Bad Request

    Ваш комп'ютер визнає, що цей сервер не може бути підданий.

    Request line містить в собі правильні характеристики, що належать до протоколу string.

    Ця стаття дає низку відповідей на те, що організація або проект може здійснити manage a risk. Ризик може бути визначений як невизначеність, з якої позитивний ( an opportunity) or negative ( a threat). Management risk is critical to project success and it is the task of risk management

    to manage a project’s exposure to risk (). risk assessment the risk assessment (likelihood, impact, criticality) і організації's attitude to risk. Там є число можливих відповідей до ризиків і як ризиків може бути threats or opportunities orці include responses that are suitable for potential

    . Відповіді є сумісними в table below.
    Table of risk responses Risk Response

    Description/example

    Suitable for…. risk types (these are suggestions and not exhaustive)
    Threats

    Avoid

    Ризик is avoided by change the project in someway to bypass the risk.

    Деякі політичні ризики e.g. adverse public opinion. Один технічний/операційний/інфраструктурний ризик e.g. maintenance проблем. Legal і regulatory risks e.g. регулювальні системи, licensing requirements.

    Transfer Деякі strategic/commercial risks e.g. theft, insolvency може бути позбавлена ​​проти. See business risks

    for more examples.

    Reduce

    Дія є така, щоб змінити будь-яку статтювідповідь про ризик, або на небезпеку того, що це буде.

    The most frequently used response to risk.

    Widely applicable - Technical/Operational/Infrastructure e.g. negligence, performance failure, scope 'creep', unclear expectations.

    Organisational/management/human factors e.g. personality clashes, поорні літератури, і вільний вибір selection.

    Кілька політичних, правових і регулювальних, і економічних/фінансових ризиків можуть бути потрібні для того, щоб бути зроблені з місцем e.g. war and disorder, exchange rate fluctuation. Contingency

    Тут план ведеться в місці, щоб відповісти, якщо ризик реалізується.
    Economic/financial/market
    Political

    Legal and regulatory

    Напевно всі ризики можуть і повинні мати континентальний план в місці.
    Share risk response - meaning and definition Share Можливість shared with partner or supplier to maximise the benefits through use of shared resource/technology etc.
    Exploit risk response - meaning and definition Exploit Програма може бути адаптована до того, щоб прийняти зміни в технології або новий ринок.
    Economic/financial/market e.g. нові й емерингові ринки, позитивні зміни в обмінних оборотах або інтересах міжнародних змін. Enhance Strategic/commercial opportunities є як нові партнери, нові capital investment, нові promoters.
    Reject Тут не діють, і можливий, щоб отримати від можливих можливостей. можуть бути поставлені в зоні, щоб виявити можливий захід. Політичні або природні e.g. нові транспортні зв'язки, зміна громадськості шляхом позитивних змін в політиці/можливості для лобіювання тощо.

    Конфіденційні плани повинні identify the actions that will be taken if a risk occurs. Додаткові actions will often have an asocied cost and a budget should be set aside in the business case to cover this. Top 50 Business Risks and how to manage them! 20 Common Project Risks - example Risk Register Checklist of 30 Construction Risks Risk Responses - references Office of Government Commerce(2002), Managing Successful Projects with PRINCE2, London: TSO.

    The Projects Group PLC, 2006, Risk Management Overview, Sutton: The Projects Group plc.

    Описуваний об'єкт є дуже корисним та потужним інструментом. Цей об'єкт має кілька методів, їх опис наводиться нижче:

    Колекції: Методи: Властивості: Колекція Response.Cookies

    Колекція cookies встановлює значення для cookies. Якщо ці cookies не існують, то створює їх. Якщо cookie існує, то набуває нового значення, а старе знищується.

    Response.Cookies(cookie) [(ключ) | . атрибути ] = значення

    Параметри:

    • cookie - Ім'я cookie
    • Ключ – необов'язковий параметр. Якщо він зазначений, то cookie – це довідник (вкладений) і ключ – це безліч значень.
    • Атрибути - Вказана інформація про самі cookie. Цей параметр може бути одним з наступних:
    • Значення - Вказує значення, яке потрібно присвоїти даному ключу або атрибуту.
    НазваОпис
    DomainЛише запис. Якщо зазначено, то cookie надсилаються лише за запитом з цього домену.
    ExpiresЛише запис. Дата, коли у cookie закінчується термін дії. Ця дата має бути встановлена ​​для того, щоб cookie записалися на жорсткий диск клієнта після закінчення сесії. Якщо цей атрибут не встановлено, то дата закінчення терміну дії cookie приймається поточною датою. Cookie припинять термін дії відразу після закінчення сесії.
    HasKeyЛише читання. Вказує на те, чи містить cookie цей ключ.
    PathЛише запис. Якщо зазначено, то cookie надсилаються лише за запитом з цього шляху. Якщо параметр не встановлено, використовується шлях до програми.
    SecureЛише запис. Вказує на те, чи будуть захищені cookie чи ні.

    Примітка:

    Якщо cookie з ключем створено так, як показано в наступному скрипті,

    то наступний заголовок буде надісланий:

    Set-Cookie:MYCOOKIE=TYPE1=цукор&TYPE2=печиво

    Якщо ж привласнити mycookie значення без використання ключів, то ця дія зруйнує type1 і type2 - ключі. Наприклад:

    У попередньому прикладі ключі type1 та type2 будуть зруйновані та їх значення втрачені. Mycookie тепер міститиме в собі значення шоколадний зефір.

    Ви також можете перевірити існування конкретного ключа в такий спосіб:

    Якщо буде виведено TRUE, значить такий ключ існує, у разі FALSE – ні.

    Метод Response.Write

    Response.Write змінна_або_значення

    Параметри:

    • перемінна_або_значення - Дані для виведення на екран браузера через HTML. Цей параметр може бути будь-якого типу, який підтримується VisualBasic Scripting Edition. Тобто дані можуть бути типами: дата, рядок, символ, числові значення. Значення параметра не може містити комбінації %>. Замість неї можна використовувати рівнозначну комбінацію. Web-сервер буде перетворювати цю послідовність на необхідну, коли скрипт буде виконано.

    Наступний приклад показує, як працює метод Response.write для виведення повідомлення клієнту.

    Я просто скажу вам: А ваше ім'я

    Наступний приклад додає HTML-таг на веб-сторінку. Оскільки цей метод неспроможна містити комбінацію %>, ми використовуємо послідовність %>. Отже приклад скрипту:

    Результатом виводу буде рядок:

    Метод Response.Redirect

    Response.Redirect URL (URL - універсальний описувач ресурсів)

    Параметри:

    • URL - параметр є універсальним описувачем ресурсу. Він показує, що потрібно переадресувати браузер.

    Примітка:

    Будь-яке входження даного методу між тагами та веб-сторінки буде проігноровано. Цей метод можна використовувати лише у заголовку HTML-сторінки. Даний метод передасть заголовок (header) браузеру, якщо пропущено параметр URL цього об'єкта в наступному вигляді:

    HTTP/1.0 302 Object Moved Location URL

    Метод Response.End

    Response.End

    Примітка:

    Якщо властивість Response.Buffer була встановлена ​​в TRUE (істина), то викликаючи метод Response.End буде проводити очищення буфера, виштовхуючи дані з нього клієнту. Якщо ви не бажаєте виводити дані користувачеві, ви повинні викликати наступний метод:

    Метод Response.AddHeader

    Метод AddHeader додає HTML-заголовок із певними значеннями. Цей метод завжди додає новий заголовок для відповіді клієнтському браузеру. Цей метод не замінює існуючий заголовок новим. Доданий заголовок не можна видалити.

    Цей метод застосовується лише для "просунутих" завдань.

    Response.AddHeader ім'я_змінної, значення

    Параметри:

    • имя_переменной - Назва нового параметри HTML-заголовка.
    • значення - значення, яке буде запам'ятоване в заголовку.
    Зауваження:

    Для коректної роботи методу ім'я_змінної не повинно містити символу підкреслення (_). Набір ServerVariables інтерпретує символ підкреслення як тире в заголовку. Наприклад наступний скрипт змушує сервер визначити параметр з HTML-заголовка, що називається MY-HEADER.

    Так як HTTP протокол вимагає, щоб всі параметри заголовка були передані до початку тіла HTML-сторінки, ви повинні викликати метод AddHeader у вашому скрипті до того, як почнеться опис .... Є один виняток. Якщо значення властивості Buffer встановлено в істину (true), тоді можна писати AddHeader у будь-якій точці скрипта, але до першого виклику методу Flush. В іншому випадку, вихід методу AddHeader викликає помилку.

    Наступні два.ASP-файли демонструють останнє зауваження.

    ваш текст на сторінці

    У цьому прикладі сторінка не буферується. Скрипт працює однак AddHeader викликається перед тим, як сервер робитиме висновок у HTML клієнту.

    тут йде деяка інформація вашої сторінки...

    У другому прикладі сторінка буферується і як ресультат сервер не видає текст клієнту доти, доки скінчиться сам скрипт чи доки не зустрінеться метод Flush. Ви можете використовувати цей метод для того, щоб надіслати кілька копій деякого параметра заголовка з різними значеннями, як із заголовком WWW-Authenticate.

    Метод Response.AppendToLog

    Метод AppendToLog додає рядок до кінця файлу звіту (log-file) web-сервера. Ви можете викликати цей метод стільки разів, скільки вам потрібно. Щоразу при викликі методу файл звіту сервера буде записаний вказаний вами рядок.

    Response.AppendToLog значення

    Параметри:

    • значення - Текст, який буде додано до фалу звіту веб-сервера. Цей рядок не може містити символ коми (,). Причому загальна довжина рядка, що додається, не повинна перевищувати 80 символів.
    Зауваження:

    Для використання цієї можливості вам необхідно, щоб опція URI Query була дозволена на панелі "розширених властивостей ведення log-файлу" для цього веб-сервера IIS.

    Метод Response.BinaryWrite

    Метод BinaryWrite дозволяє записувати вказану інформацію у поточний HTTP-висновок без будь-якого перетворення символів. Цей метод зручний для виведення нестрокової інформації, такої як двійкові дані, необхідні яким-небудь додатком.

    Response.BinaryWrite дані

    Параметри:

    • Дані - Дані, призначені для HTTP-виводу.

    Якщо у вас є об'єкт, що породжує байтовий масив, ви можете використовувати наступний виклик даного методу для передачі цього масиву будь-якій програмі, запущеній на клієнтській машині.

    Метод Response.Clear

    Метод Clear стирає весь забуферований HTML-висновок. Однак цей метод не стирає інформаїцю з буфера, пов'язану із заголовком. Ви можете використовувати цей метод для керування помилками. Однак виконання даного методу буде призводити до помилки, якщо властивість Response.Buffer не істина (true).

    Властивість Response.CacheControl

    Ця властивість визначає встановлене за замовчуванням значення. Коли ви встановлюєте властивість значення Public, то Proxy-сервер може кешувати висновок, що генерується ASP-ом.

    Response.CacheControl [= cache control header]

    Параметри:

    • Cache control header - Цей параметр управління заголовком може бути Public або Private.
    Властивість Response.CharSet

    Властивість CharSet дозволяє додавати назву кодової таблиці символів (наприклад, WINDOWS-1251) HTML заголовок, рядок content-type (тип вмісту).

    Response.CharSet Ім'я_кодової_таблиці

    Параметри:

    • Ім'я_кодової_таблиці - Рядок, який вказує кодову таблицю для даної HTML-сторінки. Найменування даної кодової таблиці буде додано до заголовку HTML-файлу під параметром "content-type".

    Для ASP-сторінки, для якої не використано властивість Response.Charset параметр "content-type" у заголовку буде наступним:

    Content-type:text/html

    Якщо ж ASP-файл містить компанію

    то в заголовку поле content-type буде мати вигляд

    Content-type:text/html; charset=Windows-1251

    Примітка:

    Ця функція вставляє будь-який рядок у заголовок і не перевіряє його правильність.

    Якщо сторінка містить кілька того Response.Charset, то кожен наступний буде замінювати значення на своє власне.

    Властивість Response.ContentType

    Властивість ContentType дозволяє вказувати тип вмісту HTML-файлу. Якщо ця властивість не використана, за замовчуванням приймається text/html.

    Response.ContentType [=тип_вмісту]

    Параметри:

    • тип_вмісту - Рядок, що описує тип вмісту HTML. Цей рядок зазвичай має вигляд "тип/підтип", де тип це основна категорія вмісту та підтип - вказує тип вмісту. Для отримання повного списку типів, що підтримуються - зверніться до документації до браузера або специфікації HHTP.

    Наступний приклад ілюструє встановлення типу вмісту як Формат Визначення Каналів (Push-канали).

    Другий приклад демонструє встановлення властивості найбільш загальновідомі значення.

    Властивість Response.Expires

    Властивість Expires вказує проміжок часу доки сторінка HTML закешована браузером вважається такою, що не втратила силу (термін зберігання). Якщо користувач запитує сторінку, що закешує, у браузера, у якої не вийшов термін "зберігання", то браузер повертає її прямо зі свого кеша.

    Response.Expires [=число]

    Параметри:

    • Число - Кількість часу в хвилинах перед тим, як сторінка буде вважатися "простроченою". Установка цього значення 0 змушує цю сторінку стає " простроченою " негайно.

    Примітка:

    Якщо ця властивість встановлена ​​більш ніж один раз на сторінці, використовується найменше значення.

    Властивість Response.ExpiresAbsolute

    Властивість ExpiresAbsolute вказує час і дату, після якого сторінка HTML закешована браузером вважається такою, що втратила силу (вийшов термін зберігання). Якщо користувач запитує сторінку, що закешує, у браузера, у якої не вийшов термін "зберігання", то браузер повертає її прямо зі свого кеша. Якщо час вказано (а дата вказано), то термін зберігання цієї сторінки закінчується опівночі цього дня. Якщо ні час ні дата не вказано, то значення надається відповідно до дня і часу, коли було запущено скрипт.

    Response.ExpiresAbsolute [= [дата] [час]]

    Параметри:

    • дата - Вказує на дату закінчення терміну зберігання. Формат дати повинен відповідати стандарту RFC-1123.
    • час - Вказує на час, коли сторінка закінчується "термін зберігання". Це значення переводиться у формат GMT (час за Грінвічем) перед тим, як заголовок буде переданий клієнту.

    Примітка:

    Якщо ця властивість визначається більше одного разу на сторінці, то момент закінчення терміну зберігання приймається найшвидшим з усіх зазначених значень.

    Властивість Response.IsClientConnected

    Ця властивість є значення тільки для читання, тобто цій властивості не можна надавати ніяких значень. Ця властивість вказує на те, чи підключено клієнта або вже не підключено до сервера, визначене в останньому з Response.Write.

    Response.IsClientConnected ()

    Примітка:

    Ця властивість дозволяє вам визначати моменти, коли користувач підключено і коли відключено від сервера. Наприклад, довжина періоду часу тим часом, коли сервер відповів і коли клієнт зробив запит дає впевненість у тому, що клієнт ще підключений і є сенс продовжити виконання скрипту.