Модераторы: ZeeLax, powerfox
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Правильный алиас Apache 
:(
    Опции темы
WolfAlone
Дата 21.6.2011, 23:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


В экстазе
***


Профиль
Группа: Завсегдатай
Сообщений: 1010
Регистрация: 16.9.2008
Где: Рай

Репутация: нет
Всего: 5



Доброго времени суток! Столкнулся с такой проблемой:

JQuery AJAX запрос не хочет работать, так как ругается на то, что загружать контент с ДРУГОГО сайта - запрещено. Но, дело в том, что это не другой сайт, а тот же самый сайт с той лишь разницей, что адрес в браузере указывается с "www" или без него. То есть, ситуация такая:

1. Заходим на сайт: exaple.com - всё работает
2. Заходим на сайт www.exampe.com - аякс запрос не может быть выполнен, т.к. ссылка дана на сайт: exampe.com (без "www").

Подозреваю, что где-то что-то не так я настроил в Apache 2.

Кто-нибудь сталкивался с подобной проблемой, как её возможно решить?

Кусочек конфига apache 2:
Код

ServerName example.com
ServerAlias www.example.com


Добавлено через 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 наше фсё!

(с) Евгений Вольф
PM MAIL WWW ICQ Skype   Вверх
WolfAlone
Дата 22.6.2011, 00:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


В экстазе
***


Профиль
Группа: Завсегдатай
Сообщений: 1010
Регистрация: 16.9.2008
Где: Рай

Репутация: нет
Всего: 5



Да, и ещё такая же проблема с куками (для с/без www) - получились разные сайты почему-то, и вот такой вот код:

Код

<?php echo $_SERVER['HTTP_HOST']; ?> //почему-то всегда возвращает адрес без WWW


Вопрос: это можно как-то исправить?


--------------------
И сказал Бог: "Тогда я построю свой мир с блэк-джеком и шлюхами!"

Ф топку Ubuntu, Debian наше фсё!

(с) Евгений Вольф
PM MAIL WWW ICQ Skype   Вверх
Wolf1994
Дата 22.6.2011, 08:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1701
Регистрация: 5.10.2004

Репутация: нет
Всего: 29



Цитата(WolfAlone @  21.6.2011,  23:53 Найти цитируемый пост)
Подозреваю, что где-то что-то не так я настроил в Apache 2.
 Ошибка связана с защитой браузера от меж-сайтового скриптинга и к настройке сервера отношения не имеет.
Цитата(WolfAlone @  21.6.2011,  23:53 Найти цитируемый пост)
1. Сделать редирект с expample.com на www.example.com //Это вариант мне не нравится!

Вариант хороший, в том числе и для индексации сайта поисковыми системами, а также снижения нагрузки во время сканирования сайта вдвое.
Цитата(WolfAlone @  21.6.2011,  23:53 Найти цитируемый пост)

2. Удалить алиас и сделать www субдоменом сайта, положив туда точную кода сайта, исправив базовый URL на такой же, но с "www" //вариант крайне хреновый, т.к. придётся переписывать часть кода 

Проще и удобнее указывать адрес сайта в base на одном сайте, тогда во всех случаях запросы будут идти на тот же самый домен.
Цитата(WolfAlone @  22.6.2011,  00:18 Найти цитируемый пост)
Да, и ещё такая же проблема с куками (для с/без www) - получились разные сайты почему-то

Чтобы куки работали на всех поддоменах (www,subdomain...) надо ставить их на домен второго уровня.
PM MAIL WWW   Вверх
WolfAlone
Дата 22.6.2011, 23:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


В экстазе
***


Профиль
Группа: Завсегдатай
Сообщений: 1010
Регистрация: 16.9.2008
Где: Рай

Репутация: нет
Всего: 5



Цитата(Wolf1994 @  22.6.2011,  08:38 Найти цитируемый пост)
Чтобы куки работали на всех поддоменах (www,subdomain...) надо ставить их на домен второго уровня. 

Дело в том, что куки и так по умолчанию ставят на домен второго уровня (http://example.com), а вот на том же адресе с "www" уже не работают. То есть работают, но уже как на самостоятельно сайте.

По поводу редиректа - это конечно в какой то мере выход, но другие сайты обходятся без него! Даже читая этот форум, я могу писать как просто: http://forum.vingrad.ru так и http://www.forum.vingrad.ru и всё работает как надо, безо всяких редиректов. Или взять в пример тот же Яндекс, Гугл и ещё тысячи сайтов! Они тоже прекрасно работают без редиректов! И... им как-то удаётся обходить защиту браузера от кросскриптинга...


--------------------
И сказал Бог: "Тогда я построю свой мир с блэк-джеком и шлюхами!"

Ф топку Ubuntu, Debian наше фсё!

(с) Евгений Вольф
PM MAIL WWW ICQ Skype   Вверх
Wolf1994
Дата 23.6.2011, 07:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 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 соответственно...

Цитата(Wolf1994 @  22.6.2011,  08:38 Найти цитируемый пост)
Проще и удобнее указывать адрес сайта в base на одном сайте, тогда во всех случаях запросы будут идти на тот же самый домен.

Ошибся. Как раз прописывание неверного base и может привести к возникновению ошибки. По умолчанию (без базового URL) запрос идёт на открытый в данный момент домен. Также причиной ошибки может стать обращение к AJAX по полному URL, который не совпадает с текущим адресом.

Цитата(WolfAlone @  22.6.2011,  23:17 Найти цитируемый пост)
Дело в том, что куки и так по умолчанию ставят на домен второго уровня (http://example.com), а вот на том же адресе с "www" уже не работают. То есть работают, но уже как на самостоятельно сайте.

Если можно, подробнее. Куки, установленные на example.com не видны на www.example.com и не доступны для изменения на нём? Можете привести скрипт установки кук?

Это сообщение отредактировал(а) Wolf1994 - 23.6.2011, 07:25
PM MAIL WWW   Вверх
WolfAlone
Дата 24.6.2011, 01:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


В экстазе
***


Профиль
Группа: Завсегдатай
Сообщений: 1010
Регистрация: 16.9.2008
Где: Рай

Репутация: нет
Всего: 5



Wolf1994, 
Цитата(Wolf1994 @  23.6.2011,  07:15 Найти цитируемый пост)
Если можно, подробнее. Куки, установленные на example.com не видны на www.example.com и не доступны для изменения на нём?


Да, получается именно так... В данный момент код привести не могу, т.к. в очередной раз ко мне в руки на доработку попал проект на CodeIgniter, и меня уже начинает нервировать этот Framework. Куки устанавливает именно он, и все проблемы исходят именно от него! Именно в этом FW есть такой параметр как BaseURL и именно он генерирует ссылки основываясь на этом параметре... С другими FW у меня почему-то подобных проблем не возникало.

Где-то в документации на Apache 2 я нашёл параметр типа "UseCanonicalName". Эта директива как-то может помочь решению проблемы?

Добавлено через 1 минуту и 2 секунды
P.S. Не могу привести код, т.к. не разбирал исходик CI в том месте, где (и как) он устанавливает куки.


--------------------
И сказал Бог: "Тогда я построю свой мир с блэк-джеком и шлюхами!"

Ф топку Ubuntu, Debian наше фсё!

(с) Евгений Вольф
PM MAIL WWW ICQ Skype   Вверх
Wolf1994
Дата 24.6.2011, 07:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1701
Регистрация: 5.10.2004

Репутация: нет
Всего: 29



Допустим, framework настроен на один домен - "example.com", тогда куки могут быть установлены на домен второго уровня при обращении к "www.example.com" и "example.com" и в обоих случаях успешно прочитаны.

Пример, который подтверждает это, при обращении к обоим сайтам, будучи запущенным на localhost'е:
Код

setcookie ('test', 'test', (time()+31104000), "/" , 'example.com', 0);
//чтобы проверить второй вариант совместимости значение куки нужно изменить

print $_COOKIE ['test'];
//$_COOKIE примет установленную куку после повторного обращения к скрипту


Другой вариант. Для каждого домена куки ставятся отдельно. Тогда на "www.example.com" могут быть прочитаны куки "example.com" - $_COOKIE читает куки домена второго уровня, если они есть. Установка же cookies на домен с "www" может привести к конфликту, если такие же куки уже есть на домене и без "www" - они не поставятся, или поставятся, если их нет на домене второго уровня, но станут недоступны при обращении к "example.com".

Цитата(WolfAlone @  24.6.2011,  01:41 Найти цитируемый пост)
Где-то в документации на Apache 2 я нашёл параметр типа "UseCanonicalName". Эта директива как-то может помочь решению проблемы?

Нет. Внутренние настройки сервера никак не помогут повлиять на использование фреймворком запросов к "чужому" домену  (любой домен отличный от заданного в адресной строке браузера является таким), что входит в конфликт с политикой безопасности браузера.

Проблема на стороне используемой системы разработки и самое простое решение - редирект. Более сложное - исправление кода F/W.

Это сообщение отредактировал(а) Wolf1994 - 24.6.2011, 07:22
PM MAIL WWW   Вверх
WolfAlone
Дата 24.6.2011, 07:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


В экстазе
***


Профиль
Группа: Завсегдатай
Сообщений: 1010
Регистрация: 16.9.2008
Где: Рай

Репутация: нет
Всего: 5



P.P.S. В дополнение к выше сказанному, хочу добвить ещё вот что:

К сожалению, генерировать относительные ссылки, типа:
Код

<a href="file/download.exe">Скачать</a>


я не могу, т.к. это повлечёт за собой целый ряд проблем. Браузер, не знает, что такое ссылка относительно домена. Любой браузер понимает ссылки относительно текущего адреса. А так как, у нас присутствуют т.н. "Clean URL's" (например: http://www.example.com/news/33) - бразер понимает текущую строку не только как адрес, но и как путь на сервере и ссылки приходится генерировать средствами FW, дабы не забивать себе голову такой штукой, как: "а сколько же уровней назад нужно вернутся, что бы текущая ссылка была корректной?".


--------------------
И сказал Бог: "Тогда я построю свой мир с блэк-джеком и шлюхами!"

Ф топку Ubuntu, Debian наше фсё!

(с) Евгений Вольф
PM MAIL WWW ICQ Skype   Вверх
Wolf1994
Дата 24.6.2011, 08:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1701
Регистрация: 5.10.2004

Репутация: нет
Всего: 29



Если вариант с редиректом не подходит, посмотрите решение проблемы средствами F/W (первый код).

Больше ничего подсказать по данному вопросу не могу.
PM MAIL WWW   Вверх
WolfAlone
Дата 24.6.2011, 19:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


В экстазе
***


Профиль
Группа: Завсегдатай
Сообщений: 1010
Регистрация: 16.9.2008
Где: Рай

Репутация: нет
Всего: 5



Wolf1994, благодарю за информацию, это как раз примерно то, что я и собирался сделать, но путём использования директивы Apache: 
Код

UseCanonicalName
 и 
Код

$base_url = $_SERVER['SERVER_NAME']
 или как-то примерно так...

Буду пробовать, о результатах напишу (вдруг ещё кому пригодится).


--------------------
И сказал Бог: "Тогда я построю свой мир с блэк-джеком и шлюхами!"

Ф топку Ubuntu, Debian наше фсё!

(с) Евгений Вольф
PM MAIL WWW ICQ Skype   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Linux/UNIX: Oбщие вопросы"
nickless
Imple
pythonwin

В этом форуме предпочтительны вопросы на следующие темы:

  • Конкретные вопросы о конкретном ПО. В таких вопросах желательно привести точные данные о программе: версия программы, версия ОС, версия ядра, и проблему в форме: сделал Х, хотел получить Y, а получил Z.
  • Неконкретные вопросы о выборе ПО
  • Обзоры - как дополнение в ветку Обзоры


  • Вы должны соблюдать правила форума.
  • Помните: какой вопрос, такой и ответ. Прежде чем задать вопрос прочитайте вот эту статью на форуме CIT.
  • Оскорблять запрещается.
  • Религиозные войны в Религиозных войнах.
  • Общение "просто так" в Клубе юнуксоидов. В отличие от многих других разделов, здесь разрешается сдержанно оффтопить и юморить в тему.

За интересные статьи, находки, решения, программы и просто реальную помощь будут ставиться + в репу).


В данный момент этот раздел модерируют nerezus, nickless, powerfox, pythonwin, Imple и ZeeLax. Если вы хотите помочь нам, пишите в ПМ и мы обсудим.


Спасибо. И use UNIX or die; С уважением, nerezus, nickless, powerfox, pythonwin, Imple, ZeeLax.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Программное обеспечение под *NIX системы | Следующая тема »


 




[ Время генерации скрипта: 0.0509 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.