CORS для запросов ajax или flash, которые обычно не разрешаются flash.Например, если не существует междоменной политики для домена x, и вы извлекаете mp3-файл оттуда через flash для воспроизведения, flash не позволит вам прочитать теги id3 mp3-файла.Для ajax вы не можете выполнить запрос, если целевой сервер не имеет междоменной политики, которая позволяет вашему домену отправлять запросы.
Междоменный обмен сообщениями позволяет вам общаться с iframe вдокумент, который имеет другое происхождение.Например, если у вас есть видео-фрейм youtube, вы можете передать этому фрейму сообщение, чтобы изменить громкость.Обычно никакое общение невозможно, потому что у iframe другое происхождение, поэтому вы ничего не могли бы сделать с iframe на программном уровне.
Причины использования того или иного теперь должны быть понятны.CORS позволяет запрашивать данные из другого источника, в то время как передача сообщений между главным окном и iframe используется, когда вы хотите обмениваться данными с приложением, которое находится внутри iframe, но не в том же источнике.
Практический пример:
1.У вас есть iframe с плеером YouTube.
2.Вы запрашиваете видео для воспроизведения из API данных YouTube (CORS, может быть JSONP, XHR или что-либо еще).
3.Вы теперь передаете междоменное сообщение в iframe, чтобы начать воспроизведение любого видео, запрошенного на шаге # 2