Проблема не в том, что сайт может получить доступ к ресурсам других сайтов, к которым у него уже был доступ. Проблема связана с доменом - если я использую браузер в своей компании, и ajax-скрипт злонамеренно решает попробовать 10.0.0.1 (возможно, мой шлюз), он может иметь доступ просто потому, что запрос теперь поступает от моего компьютер (возможно 10.0.0.2).
Итак, решение - CORS. Я не говорю, что это лучше, но решает эту проблему.
1) Если шлюз не может вернуть обратно принятый исходный заголовок «bobthehacker.com», запрос отклоняется браузером . Это обрабатывает старые или неподготовленные серверы.
2) Если шлюз допускает только элементы из домена myinternaldomain.com, он отклонит ORIGIN из «bobthehacker.com». В случае SIMPLE CORS он все равно будет возвращать результаты. По умолчанию; вы можете настроить сервер даже не делать этого. Затем результаты отбрасываются без загрузки браузером .
3) Наконец, даже если он будет принимать определенные домены, у вас есть некоторый контроль над заголовками, которые принимаются и отклоняются, чтобы запрос от этих сайтов соответствовал определенной форме.
Примечание. Заголовки ORIGIN и OPTIONS контролируются запрашивающей стороной - очевидно, кто-то, создающий собственный HTTP-запрос, может поместить туда все, что он захочет. Однако современный CORS-совместимый браузер этого НЕ БУДЕТ. Это браузер, который контролирует взаимодействие. Браузер не позволяет bobthehacker.com получить доступ к шлюзу. Это та часть, которую вам не хватает.