Можно ли разрешить междоменные запросы с использованием записей CNAME? - PullRequest
5 голосов
/ 23 декабря 2011

Я знаю, что очень много междоменных вопросов, но я не смог найти то, что я ищу.

Я бы хотел сделать клиентский AJAX-запрос с a.com на b.com, что явно не разрешено. Я подумал, что если бы я создал запись CNAME bacom-> b.com, то браузер разрешил бы этот запрос, поскольку это означает, что тот, кто владеет доменом a.com, хочет явно разрешить запросы к b.com, но я все равно получаю доступ -Control-Allow-Origin ошибка, которая не позволяет запрос. Разве невозможно сделать этот запрос с CNAMEs?

Примечание: я не контролирую b.com, поэтому не могу установить там заголовки.

Ответы [ 2 ]

10 голосов
/ 23 декабря 2011

Нет. (Но у меня есть настоящее объяснение)

«Правила дорожного движения» для «междоменных запросов» обычно регулируются «Единой политикой происхождения» (см .: Комментарий W3C , Википедия , Справочник по безопасности браузера Google , Сеть разработчиков Mozilla )

W3C специально заявляет, что:

Источник определяется схемой, хостом и портом URL.

Согласно этому определению, даже запросы от foo.com до bar.foo.com будут заблокированы.

В вашем примере вы предлагаете, чтобы при создании CNAME для bar.foo.com, который указывает на bar.com (я полагаю, у вас была опечатка), запросы должны bar.com через bar.foo.com. Но, как я уже говорил выше, даже запросы, исходящие из foo.com, будут блокироваться на стороне клиента от выполнения HTTP-запросов к bar.foo.com.

На странице Mozilla есть даже такой конкретный пример:

Mozilla считает, что две страницы имеют одинаковое происхождение, если протокол, порт (если он указан) и хост одинаковы для обеих страниц. В следующей таблице приведены примеры сравнения источников с URL http://store.company.com/dir/page.html:

URL | Результат | Причина

http://store.company.com/dir2/other.html | Успех
http://store.company.com/dir/inner/another.html | Успех
https://store.company.com/secure.html | Отказ | Другой протокол http://store.company.com:81/dir/etc.html | Отказ | Другой порт http://news.company.com/dir/other.html | Отказ | Другой хост

1 голос
/ 23 декабря 2011

Нет.

Я никогда не слышал о CNAME как способе обойти эту проблему, поэтому я думаю, можно с уверенностью предположить, что это не решение вашей проблемы.

...