[Перевод] История Same Origin Policy

В начале 90-х интернет был очень базовым и простым для понимания. По сути, это были два компонента: веб-сервер и браузер.

На локальном компьютере вы устанавливали браузер, который, получив URL, отправлял HTTP GET-запрос на сервер, на котором запрашиваемый ресурс. Затем этот сервер отвечал текстом, но не просто текстом. HTTP означает протокол передачи гипертекста, и этот гипертекст может быть, например, HTML-документом. Проще говоря, это текстовый файл с HTML-кодом, а браузер — это программа, которая интерпретирует этот код и отображает для вас приятный интерфейс веб-сайта.


Но настоящая сила заключается в возможности связывать ресурсы вместе с помощью тегов link. Вы можете ссылаться на другие документы и другие веб-сайты.

ad583226aea11527fe4f01c241b6b49f.png

При нажатии на такую ссылку ваш браузер изменял «местоположение» (location).
Информация теперь стала по-настоящему взаимосвязанной и ее было легко просматривать (»browse-ить»).

Но это было только начало. Примерно в 1994–1995 годах в интернете появился Amazon.

ea1401c555916e7e90068a50e7c0875e.png

Это было время, когда в интернете стало появляться все больше и больше реальных услуг: онлайн-банки, интернет магазины, веб-почты и т.п.
Технологии развивались очень быстро.

На стороне клиента, в браузере, появилось больше возможностей, например формы.

cfececaccebb67fa519d26323da6e77d.png

Люди могли вводить текст в формы и отправлять контент на сервер. И, конечно же, развивалось серверное ПО.

Инженерам приходилось придумывать решения новых проблем, например, как хранить товары в корзине интернет-магазина на стороне клиента, на его компьютере.

Так в июне 1994 года разработчики браузера Netscape изобрели cookie.

a7ca44d49e3be56386ba50a8fe053926.png

Вот как они описывают cookie:

1e455471a67441ed3b11001b66023652.png

»Когда вы просматриваете веб-страницу, любые cookie, которые серверы могут отправлять на вашу копию Netscape Navigator хранятся в памяти вашего компьютера. Когда вы выходите из Netscape Navigator, любые cookie, срок действия которых еще не истек, записываются в файл cookie, чтобы их можно было загрузить снова при следующем запуске Netscape Navigator …

Netscape Navigator не отправляет никакие cookie на другие веб-серверы, для которых они не предназначены».

Вот, например, у меня есть старая версия Netscape, и я создал простую страницу входа с cookie.

3ce2c1daf9d68ca2cd2ffcf9421ab9c1.png

После ввода данных входа, вы видите, как это работает, мы можем войти в систему как администратор.

0e201e09680da38e5eb19f2848dc281e.png

Теперь начинается самое интересное. Вот примечания к выпуску бета-версии Netscape 2.0:

4a3508c4ec215c0f9eabfad8fc877ec1.png

»LiveScript в настоящее время реализован только в Windows. Остальные платформы будут поддерживаться в бета-версии 2».

К сожалению, ссылка на документацию по LiveScript, похоже, утеряна.

Вскоре после этого, взглянув на страницу выпуска бета-версии 2, мы можем прочитать следующее:»Built-in JavaScript». LiveScript теперь называется JavaScript.

2f82413afbc7bccba9423233d2e899e2.png

»Netscape Navigator теперь включает встроенный язык сценариев (скриптов), называемый JavaScript. JavaScript разработан на основе языка JAVA, который расширяет и улучшает возможности HTML документов. JavaScript поддерживает большинство синтаксисов выражений JAVA и основные конструкции потока управления, но без строгой проверки типов и статической типизации JAVA. JavaScript встроен в HTML-документ с помощью тега SCRIPT, и для запуска сценария не требуется компиляция».

И вот документация с красивой таблицей сравнения JavaScript и Java:

1c3dcdf58023a4dcb15d004455d1ba09.png

Как мы знаем сегодня, это изменило все. В интернете теперь есть обработчики событий, которые могут реагировать на клики и наведения курсора мыши, вы можете определять объекты или работать со временем и датами, а так же получать доступ к формам и текстовым вводам от пользователя и т.п., все это прямо в браузере пользователя. JavaScript сделал веб-сайты динамичными.

Теперь воспользуемся Netscape 2.0, выпущенную в сентябре 1995 года, который впервые поддерживает JavaScript.

5824ef5ceed2b58a3deef7873e02583f.png

В то время веб-сайты активно использовали фреймы (теги ). Они является предшественниками сегодняшних тегов