![]() |
|
Модераторы: ZeeLax, powerfox |
![]()
|
|
| WolfAlone |
|
|||
![]() В экстазе ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1010 Регистрация: 16.9.2008 Где: Рай Репутация: нет Всего: 5 |
Доброго времени суток! Столкнулся с такой проблемой:
JQuery AJAX запрос не хочет работать, так как ругается на то, что загружать контент с ДРУГОГО сайта - запрещено. Но, дело в том, что это не другой сайт, а тот же самый сайт с той лишь разницей, что адрес в браузере указывается с "www" или без него. То есть, ситуация такая: 1. Заходим на сайт: exaple.com - всё работает 2. Заходим на сайт www.exampe.com - аякс запрос не может быть выполнен, т.к. ссылка дана на сайт: exampe.com (без "www"). Подозреваю, что где-то что-то не так я настроил в Apache 2. Кто-нибудь сталкивался с подобной проблемой, как её возможно решить? Кусочек конфига apache 2:
Добавлено через 11 минут и 45 секунд Вот оригинальное описание того, почему возникает эта ошибка: This could be due to an invalid URL or trying to load ajax content from a different domain. Ajax will only work with documents that are on the same domain as your current document due to browser restrictions. Ajax has to be run from a server to function (e.g., ajax content is not going to work from your desktop unless you are running a web server such as Apache for local development). Отчасти проблема возникает по тому, что при разработке использовался FrameWork, в котором можно задать только 1 базовый URL. То есть, либо example.com, либо www.exampe.com. Соответственно, все ссылки он генерирует в соответствии с базовым URL'ом (то есть, либо с "www", либо без него). Мои варианты решения проблемы: 1. Сделать редирект с expample.com на www.example.com //Это вариант мне не нравится! 2. Удалить алиас и сделать www субдоменом сайта, положив туда точную кода сайта, исправив базовый URL на такой же, но с "www" //вариант крайне хреновый, т.к. придётся переписывать часть кода -------------------- И сказал Бог: "Тогда я построю свой мир с блэк-джеком и шлюхами!" Ф топку Ubuntu, Debian наше фсё! (с) Евгений Вольф |
|||
|
||||
| WolfAlone |
|
|||
![]() В экстазе ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1010 Регистрация: 16.9.2008 Где: Рай Репутация: нет Всего: 5 |
Да, и ещё такая же проблема с куками (для с/без www) - получились разные сайты почему-то, и вот такой вот код:
Вопрос: это можно как-то исправить? -------------------- И сказал Бог: "Тогда я построю свой мир с блэк-джеком и шлюхами!" Ф топку Ubuntu, Debian наше фсё! (с) Евгений Вольф |
|||
|
||||
| Wolf1994 |
|
||||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1701 Регистрация: 5.10.2004 Репутация: нет Всего: 29 |
Ошибка связана с защитой браузера от меж-сайтового скриптинга и к настройке сервера отношения не имеет.
Вариант хороший, в том числе и для индексации сайта поисковыми системами, а также снижения нагрузки во время сканирования сайта вдвое. Проще и удобнее указывать адрес сайта в base на одном сайте, тогда во всех случаях запросы будут идти на тот же самый домен.
Чтобы куки работали на всех поддоменах (www,subdomain...) надо ставить их на домен второго уровня. |
||||
|
|||||
| WolfAlone |
|
|||
![]() В экстазе ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1010 Регистрация: 16.9.2008 Где: Рай Репутация: нет Всего: 5 |
Дело в том, что куки и так по умолчанию ставят на домен второго уровня (http://example.com), а вот на том же адресе с "www" уже не работают. То есть работают, но уже как на самостоятельно сайте. По поводу редиректа - это конечно в какой то мере выход, но другие сайты обходятся без него! Даже читая этот форум, я могу писать как просто: http://forum.vingrad.ru так и http://www.forum.vingrad.ru и всё работает как надо, безо всяких редиректов. Или взять в пример тот же Яндекс, Гугл и ещё тысячи сайтов! Они тоже прекрасно работают без редиректов! И... им как-то удаётся обходить защиту браузера от кросскриптинга... -------------------- И сказал Бог: "Тогда я построю свой мир с блэк-джеком и шлюхами!" Ф топку Ubuntu, Debian наше фсё! (с) Евгений Вольф |
|||
|
||||
| Wolf1994 |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1701 Регистрация: 5.10.2004 Репутация: нет Всего: 29 |
Обходить защиту не удаётся никому. Чтобы запрос срабатывал и с www.example.com и с example.com и с any.example.com, достаточно обращаться к www.example.com/ajax.php, example.com/ajax.php и any.example.com/ajax.php соответственно...
Ошибся. Как раз прописывание неверного base и может привести к возникновению ошибки. По умолчанию (без базового URL) запрос идёт на открытый в данный момент домен. Также причиной ошибки может стать обращение к AJAX по полному URL, который не совпадает с текущим адресом. Если можно, подробнее. Куки, установленные на example.com не видны на www.example.com и не доступны для изменения на нём? Можете привести скрипт установки кук? Это сообщение отредактировал(а) Wolf1994 - 23.6.2011, 07:25 |
|||
|
||||
| WolfAlone |
|
|||
![]() В экстазе ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1010 Регистрация: 16.9.2008 Где: Рай Репутация: нет Всего: 5 |
Wolf1994,
Да, получается именно так... В данный момент код привести не могу, т.к. в очередной раз ко мне в руки на доработку попал проект на CodeIgniter, и меня уже начинает нервировать этот Framework. Куки устанавливает именно он, и все проблемы исходят именно от него! Именно в этом FW есть такой параметр как BaseURL и именно он генерирует ссылки основываясь на этом параметре... С другими FW у меня почему-то подобных проблем не возникало. Где-то в документации на Apache 2 я нашёл параметр типа "UseCanonicalName". Эта директива как-то может помочь решению проблемы? Добавлено через 1 минуту и 2 секунды P.S. Не могу привести код, т.к. не разбирал исходик CI в том месте, где (и как) он устанавливает куки. -------------------- И сказал Бог: "Тогда я построю свой мир с блэк-джеком и шлюхами!" Ф топку Ubuntu, Debian наше фсё! (с) Евгений Вольф |
|||
|
||||
| Wolf1994 |
|
||||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1701 Регистрация: 5.10.2004 Репутация: нет Всего: 29 |
Допустим, framework настроен на один домен - "example.com", тогда куки могут быть установлены на домен второго уровня при обращении к "www.example.com" и "example.com" и в обоих случаях успешно прочитаны.
Пример, который подтверждает это, при обращении к обоим сайтам, будучи запущенным на localhost'е:
Другой вариант. Для каждого домена куки ставятся отдельно. Тогда на "www.example.com" могут быть прочитаны куки "example.com" - $_COOKIE читает куки домена второго уровня, если они есть. Установка же cookies на домен с "www" может привести к конфликту, если такие же куки уже есть на домене и без "www" - они не поставятся, или поставятся, если их нет на домене второго уровня, но станут недоступны при обращении к "example.com".
Нет. Внутренние настройки сервера никак не помогут повлиять на использование фреймворком запросов к "чужому" домену (любой домен отличный от заданного в адресной строке браузера является таким), что входит в конфликт с политикой безопасности браузера. Проблема на стороне используемой системы разработки и самое простое решение - редирект. Более сложное - исправление кода F/W. Это сообщение отредактировал(а) Wolf1994 - 24.6.2011, 07:22 |
||||
|
|||||
| WolfAlone |
|
|||
![]() В экстазе ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1010 Регистрация: 16.9.2008 Где: Рай Репутация: нет Всего: 5 |
P.P.S. В дополнение к выше сказанному, хочу добвить ещё вот что:
К сожалению, генерировать относительные ссылки, типа:
я не могу, т.к. это повлечёт за собой целый ряд проблем. Браузер, не знает, что такое ссылка относительно домена. Любой браузер понимает ссылки относительно текущего адреса. А так как, у нас присутствуют т.н. "Clean URL's" (например: http://www.example.com/news/33) - бразер понимает текущую строку не только как адрес, но и как путь на сервере и ссылки приходится генерировать средствами FW, дабы не забивать себе голову такой штукой, как: "а сколько же уровней назад нужно вернутся, что бы текущая ссылка была корректной?". -------------------- И сказал Бог: "Тогда я построю свой мир с блэк-джеком и шлюхами!" Ф топку Ubuntu, Debian наше фсё! (с) Евгений Вольф |
|||
|
||||
| Wolf1994 |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1701 Регистрация: 5.10.2004 Репутация: нет Всего: 29 |
Если вариант с редиректом не подходит, посмотрите решение проблемы средствами F/W (первый код).
Больше ничего подсказать по данному вопросу не могу. |
|||
|
||||
| WolfAlone |
|
||||
![]() В экстазе ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1010 Регистрация: 16.9.2008 Где: Рай Репутация: нет Всего: 5 |
Wolf1994, благодарю за информацию, это как раз примерно то, что я и собирался сделать, но путём использования директивы Apache:
Буду пробовать, о результатах напишу (вдруг ещё кому пригодится). -------------------- И сказал Бог: "Тогда я построю свой мир с блэк-джеком и шлюхами!" Ф топку Ubuntu, Debian наше фсё! (с) Евгений Вольф |
||||
|
|||||
![]()
|
| Правила форума "Linux/UNIX: Oбщие вопросы" | |
|
|
В этом форуме предпочтительны вопросы на следующие темы:
За интересные статьи, находки, решения, программы и просто реальную помощь будут ставиться + в репу). В данный момент этот раздел модерируют nerezus, nickless, powerfox, pythonwin, Imple и ZeeLax. Если вы хотите помочь нам, пишите в ПМ и мы обсудим. Спасибо. И use UNIX or die; С уважением, nerezus, nickless, powerfox, pythonwin, Imple, ZeeLax. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Программное обеспечение под *NIX системы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |