Некоторые страницы SharePoint служат http в среде https - PullRequest
1 голос
/ 25 марта 2009

У меня есть система WSS 3.0, использующая SSL, где каждая страница должна обслуживаться как https. Почти все страницы отображаются как https, но в некоторых случаях я нажимаю на ссылку, и это вызывает http-версию страницы (которая не загружается). В этих случаях я должен поставить 's' вручную, чтобы загрузить страницу. Места, где это происходит:

  • / _ layouts / newgrp.aspx: когда я пытаюсь создать новую группу, у меня получается http://server/_layouts/newgroup.aspx,, хотя это должен быть https. Страница не загружается по адресу http. Он загружается, если я вручную изменяю URL.
  • / _ layouts / edtgrp.aspx: то же самое, что newgrp.aspx
  • если я захожу в библиотеку документов и просматриваю историю версий файла, URL-адреса отдельных версий этого файла - http. Интересно, что в строке состояния браузера также указывается http, когда я наводю на них курсор (поэтому кажется, что SharePoint запутывается при создании ссылок, а не при нажатии на них)

Чтобы исправить это, я попытался добавить в DOM некоторый javascript, который ищет экземпляры http и заменяет их https. В некоторых случаях это работает, но в некоторых местах javascript не может быть достигнут, например, когда SharePoint предоставляет целевой URL-адрес в ответ на запрос POST, что, как мне кажется, имеет место с newgrp / edtgrp.aspx.

Я также пытался добавить фильтры ISAPI для перенаправления страниц с http на https. Похоже, это вызывает петли перенаправления, и в любом случае я не уверен, сохранят ли такие фильтры информацию о строке запроса или POST.

Кто-нибудь видел эту проблему?

Обновление: мы перешли на ISA из Squid, и проблема сохраняется в истории версий, но не в новой группе или группе редактирования. Мы не увидели каких-либо улучшений от изменения настроек AAM.

Места, где это происходит в ISA:

  • «История версий» под элементом в списке или библиотеке документов
  • «Управление разрешениями» в элементе списка или библиотеки документов
  • «Оповестить меня» под пунктом в списке или библиотеке документов
  • Элемент меню «Добавить пользователей» на странице «Люди и группы»
  • Элемент меню «Настройки группы» на странице «Люди и группы»
  • Элемент меню «Редактировать панель быстрого запуска» на странице «Люди и группы»
  • Пункт меню «Настройка групп» на странице «Люди и группы»
  • Элемент меню «Настройки списка» на странице «Люди и группы»

Ответы [ 5 ]

3 голосов
/ 25 марта 2009

Не уверен, что это так, но вы проверили альтернативные сопоставления доступа, чтобы убедиться, что они говорят https вместо http?

1 голос
/ 02 ноября 2009

Используйте HTTP-модуль , чтобы изменить выходные данные SharePoint, чтобы ссылки всегда менялись на https. Такой модуль может подключаться к IIS и изменять HTML-код всего, что отображается. Я использовал эту технику для обеспечения совместимости с SharePoint XHTML, и она хорошо работает.

Еще лучше, почти вся работа для вас уже выполнена. Модуль UrlRewritingNet имеет открытый исходный код и доступен для бесплатной загрузки. Он должен нормально работать на вашем сайте SharePoint. Этот инструмент имеет отличную документацию и использует регулярные выражения для сопоставления URL-адресов для изменения. Это должно быть довольно легко написать один для вашего случая, например. ^http://. Есть также много более продвинутых опций, которыми вы можете воспользоваться в случае необходимости.

Если вы предпочитаете писать свои собственные, то на сайте 15 секунд есть хорошая статья под названием Rewrite.NET - механизм перезаписи URL для .NET .

Наконец, если вы используете IIS 7, вы можете попробовать Модуль перезаписи URL . Я никогда не использовал это сам и не знаю, работает ли он с SharePoint, но это наиболее доступное решение для пользовательского интерфейса.

1 голос
/ 26 марта 2009

Я бы повторил предложение проверить сопоставления альтернативного доступа. SSL выполняется во внешних интерфейсах SharePoint или с помощью специального оборудования SSL?

0 голосов
/ 02 ноября 2009

Алекс ответил на этот вопрос с подходом, который, я думаю, в целом будет работать. Вот как я это исправил конкретно.

Похоже, что при загрузке aspx-страницы SharePoint она заполняет структуру javascript типа ContextInfo (определена в init.js), которая создается в переменной ctx. Эта структура имеет член с именем httpRoot, который позже используется в core.js для создания элементов меню в различных выпадающих списках.

Этот ctx.httpRoot по какой-то причине заполняется в javascript в файлах aspx, созданных SharePoint, с такой строкой:

    ctx.HttpRoot = "http:\u002f\u002fsubdomain.domain.com";

Да, у него есть косые черты в Юникоде, а вместо http - http. Понятия не имею почему. Но исправление этой строки в javascript, похоже, решает проблему.

Я изменил строку, добавив правило преобразования URL в ISA, которое преобразует http: \ u002f \ u002f \ в https: \ u002f \ u002f \. Я подозреваю, что модуль HTTP, который делает ту же замену, также будет работать. Или, возможно, какой-то хорошо размещенный JavaScript, который переназначает переменную в какой-то момент.

Я все еще считаю, что это не идеально, и должен быть более подходящий способ исправить эти ссылки.

0 голосов
/ 02 ноября 2009

Добавить перенаправление в IIS с http на https. Каждый раз, когда вы заходите на эту страницу, она вместо этого перенаправляет вас на страницу https.

Я бы также предложил разместить WSS на другом сервере, чтобы увидеть, есть ли у вас такие же проблемы. Если вы этого не сделаете, вам, возможно, придется перестроить / перенести ваш материал.

...