AXForum  
Вернуться   AXForum > Microsoft Dynamics CRM > Dynamics CRM: Разработка
All
Забыли пароль?
Зарегистрироваться Правила Справка Пользователи Сообщения за день Поиск Все разделы прочитаны

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 01.11.2012, 18:13   #1  
NoTimeToCry is offline
NoTimeToCry
Участник
 
101 / 10 (1) +
Регистрация: 28.04.2012
Отправка запроса при сохранении формы ms crm 2011
Добрый день! Столкнулся с такой проблемой. При сохранении формы нужно отправлять запрос на сервер http://myserver/vs=XXXX

Пишу код :
X++:
var xhttp = new XMLHttpRequest();
xhttp.open("GET", " http://myserver/vs=XXXX", true);
xhttp.send();
При этом получаю ошибку AccessDenied. Но если пробовать открывать окно через window.open() с этой ссылкой, то всё работает нормально. Вообще на этом сайте есть авторизация. Просит логин и пассворд, но если 1 раз их ввести, то при открытии окна через window.open() он их не требует. Но почему же он не пропускает запрос? В этих вопросах у меня опыта мало пока, поэтому нуждаюсь в вашей помощи. Заранее спасибо!
Старый 01.11.2012, 19:11   #2  
Anros is offline
Anros
Участник
 
54 / 28 (1) +++
Регистрация: 01.07.2009
Скорее всего, у Вас идет запрос к другому домену, это запрещено.
Почитайте эту статью: http://javascript.ru/ajax/cross-domain-scripting
За это сообщение автора поблагодарили: NoTimeToCry (1).
Старый 01.11.2012, 20:34   #3  
NoTimeToCry is offline
NoTimeToCry
Участник
 
101 / 10 (1) +
Регистрация: 28.04.2012
Засунул код в try catch, в итоге вот что получил.

alert(exception.name) даёт ошибку TypeError

alert(exception.message) - Access Denied
Старый 01.11.2012, 22:49   #4  
a33ik is offline
a33ik
Чайный пьяница
Аватар для a33ik
MCP
MCBMSS
Злыдни
Соотечественники
Most Valuable Professional
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
3,243 / 896 (36) +++++++
Регистрация: 02.07.2008
Адрес: Greenville, SC
Вам уже ответили, что проблема в кроссдоменнов вызове. try/catch тут не спасут.

Первое, что я вам посоветую, посмотрите следующие статьи:
http://mscrmshop.blogspot.ru/2012/07...ls-part-1.html
http://mscrmshop.blogspot.ru/2012/07...ls-part-2.html

Если это вам не поможет советую придумать как перенести вызов из клиентской части (скриптов) в серверную (плагины или кастомные варкфловные действия).

UPD ещё раз перечитал первое сообщение - вешайте вызов внешнего сервиса в плагин и забудьте о проблемах!
__________________
Эмо разработчик, сначала пишу код, потом плачу над его несовершенством.

Подписывайтесь на мой блог, twitter и YouTube канал.
Пользуйтесь моим Ultimate Workflow Toolkit
За это сообщение автора поблагодарили: NoTimeToCry (1).
Старый 02.11.2012, 10:29   #5  
NoTimeToCry is offline
NoTimeToCry
Участник
 
101 / 10 (1) +
Регистрация: 28.04.2012
Цитата:
Сообщение от a33ik Посмотреть сообщение
Вам уже ответили, что проблема в кроссдоменнов вызове. try/catch тут не спасут.

Первое, что я вам посоветую, посмотрите следующие статьи:
http://mscrmshop.blogspot.ru/2012/07...ls-part-1.html
http://mscrmshop.blogspot.ru/2012/07...ls-part-2.html

Если это вам не поможет советую придумать как перенести вызов из клиентской части (скриптов) в серверную (плагины или кастомные варкфловные действия).

UPD ещё раз перечитал первое сообщение - вешайте вызов внешнего сервиса в плагин и забудьте о проблемах!
А почему тогда window.open() по этой ссылке открывает нормально, без ошибок?
Старый 02.11.2012, 11:08   #6  
Артем Enot Грунин is offline
Артем Enot Грунин
Moderator
Аватар для Артем Enot Грунин
MCBMSS
Злыдни
Most Valuable Professional
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
3,912 / 623 (28) +++++++
Регистрация: 16.08.2007
Адрес: Пермь!
Записей в блоге: 151
Цитата:
Сообщение от NoTimeToCry Посмотреть сообщение
А почему тогда window.open() по этой ссылке открывает нормально, без ошибок?
Потому что window.open() открывает новое окно браузера, а не грузит с адреса потенциально опасный контекст. Если вы спросите с открытого окна документ, а с него контент вы получите то же самое сообщение об ошибке Access Denied.
__________________
http://fixrm.wordpress.com, снятие/наведение порчи. Быстро, дорого, гарантия.

MS Certified Dirty Magic Professional

Последний раз редактировалось Артем Enot Грунин; 02.11.2012 в 11:50.
За это сообщение автора поблагодарили: NoTimeToCry (1).
Старый 08.11.2012, 12:10   #7  
NoTimeToCry is offline
NoTimeToCry
Участник
 
101 / 10 (1) +
Регистрация: 28.04.2012
Всем привет. Хотелось бы уточнить. Отправляю кроссдоменный запрос из плагина.
X++:
string url = "http://servername/page1";
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
request.Credentials = new NetworkCredential("user", "password");
request.PreAuthenticate = true;
HttpWebResponse response = (HttpWebResponse)request.GetResponse();
Обязательно ли вот тут указывать еще домен?
X++:
request.Credentials = new NetworkCredential("user", "password");
Старый 08.11.2012, 12:33   #8  
a33ik is offline
a33ik
Чайный пьяница
Аватар для a33ik
MCP
MCBMSS
Злыдни
Соотечественники
Most Valuable Professional
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
3,243 / 896 (36) +++++++
Регистрация: 02.07.2008
Адрес: Greenville, SC
Всё зависит от типа аутентификации используемого в сервисе, который вы используете. Если аутентификации нет вообще, то Credentials заполнять вообще не надо.
__________________
Эмо разработчик, сначала пишу код, потом плачу над его несовершенством.

Подписывайтесь на мой блог, twitter и YouTube канал.
Пользуйтесь моим Ultimate Workflow Toolkit
Старый 08.11.2012, 12:46   #9  
NoTimeToCry is offline
NoTimeToCry
Участник
 
101 / 10 (1) +
Регистрация: 28.04.2012
Цитата:
Сообщение от a33ik Посмотреть сообщение
Всё зависит от типа аутентификации используемого в сервисе, который вы используете. Если аутентификации нет вообще, то Credentials заполнять вообще не надо.
Там есть авторизация. Но при попытке отправки получаю 401. Сейчас у меня 2 подозрения, почему так. Первое, это потому что у этих учетных данных нету доступа. Второе - потому что я не указал домен.
Старый 08.11.2012, 12:54   #10  
Likefire is offline
Likefire
Заноза в заднице
Аватар для Likefire
MCBMSS
Лучший по профессии 2009
 
547 / 50 (3) ++++
Регистрация: 22.10.2007
Адрес: Москва
Записей в блоге: 1
Скорее всего ничего сложного не будет проверить, просто добавив имя домена в аргументы. А так по логике домен конечно нужен, потому что учетные данные могут проверяться по-разному и иметь различные настройки в том или ином домене. Однако, нужно понимать: есть ли заданное имя пользователя в требуемом домене вообще.
__________________
Лень мудрого человека - это необходимое средство нейтрализации кипучей активности руководящих им дураков!
За это сообщение автора поблагодарили: NoTimeToCry (1).
Старый 08.11.2012, 17:31   #11  
NoTimeToCry is offline
NoTimeToCry
Участник
 
101 / 10 (1) +
Регистрация: 28.04.2012
Ребят, а как можно пройти кастомную авторизацию? Оказалось что авторизация для сайта, куда я отправляю запрос не виндовая. То есть
X++:
request.Credentials =  new NetworkCredential("user","password")
не прокатит(
Старый 08.11.2012, 20:46   #12  
NoTimeToCry is offline
NoTimeToCry
Участник
 
101 / 10 (1) +
Регистрация: 28.04.2012
Ребят, как можно пройти авторизацию на кастомном сайте? Делаю из плагина. Хотел попробовать через класс c# WebBrouser писать логин и пассворд в поля на страничке с авторизацией, но такое не прокатит. Потому что это плагин, а WebBrouser класс выведенный из Windosw.Forms. И Если пытаться залогиниться через страницу авторизации, то сервер не пустит запрос. Потому что авторизация разрешена только для определенной ссылки на сайт. И как в таком случае отправить запрос с авторизацией я не представляю( Подскажите пожалуйста.
Старый 08.11.2012, 22:46   #13  
Anros is offline
Anros
Участник
 
54 / 28 (1) +++
Регистрация: 01.07.2009
Цитата:
Сообщение от NoTimeToCry Посмотреть сообщение
И Если пытаться залогиниться через страницу авторизации, то сервер не пустит запрос. Потому что авторизация разрешена только для определенной ссылки на сайт.
Не совсем понял, что тут написано
Но похоже, что речь идет об обычной Forms авторизации.
В этом случае нужно сделать 2 HttpWebRequest. Первым отправить логин и пароль, вторым уже данные. Но чтобы они были в одной сессии, нужно кукиес с респонса первого реквеста установить у второго.
За это сообщение автора поблагодарили: a33ik (1), NoTimeToCry (1).
Старый 08.11.2012, 22:48   #14  
g.Naukovych is offline
g.Naukovych
Участник
MCBMSS
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
 
405 / 130 (5) +++++
Регистрация: 23.03.2011
Хакерский способ посмотреть фидлером, что отправляется на сайт с твоего компа и сделать аналогичные действия. Точно знаю, что это делатется определенными товарищами для подобных целей.
__________________
Мой блог https://procrm.tv
За это сообщение автора поблагодарили: a33ik (1), NoTimeToCry (1).
Старый 09.11.2012, 09:28   #15  
Likefire is offline
Likefire
Заноза в заднице
Аватар для Likefire
MCBMSS
Лучший по профессии 2009
 
547 / 50 (3) ++++
Регистрация: 22.10.2007
Адрес: Москва
Записей в блоге: 1
Цитата:
Сообщение от Anros Посмотреть сообщение
Не совсем понял, что тут написано
Но похоже, что речь идет об обычной Forms авторизации.
В этом случае нужно сделать 2 HttpWebRequest. Первым отправить логин и пароль, вторым уже данные. Но чтобы они были в одной сессии, нужно кукиес с респонса первого реквеста установить у второго.
Иногда этого тоже может быть недостаточно, потому что неизвестно, что находится у автора по исходному адресу: веб-форма или нечто, обернутое на веб-сервисах. Есть такие случаи, что у веб-сервисов есть специально предусмотренный метод для авторизации, если авторизация "невиндовая". Вполне может быть, что сессия работы с приложением открывается по какому-то специально предусмотренному методу веб-сервисов этого приложения. Так что можно только гадать.

Хотя по поводу CookieContainer я согласен - вариант можно испробовать.
__________________
Лень мудрого человека - это необходимое средство нейтрализации кипучей активности руководящих им дураков!
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
crminthefield: Podcast and Overview: Microsoft Dynamics CRM 2011 Update Rollup 10 Blog bot Dynamics CRM: Blogs 0 17.08.2012 03:27
Все о Microsoft Dynamics CRM: Работа с интересами в Microsoft Dynamics CRM 2011 Blog bot Dynamics CRM: Blogs 0 09.06.2012 00:11
Отправка уведомления ms crm 2011 Taker1796 Dynamics CRM: Разработка 9 06.06.2012 18:48
Gareth Tucker: Installing the Customer Care Accelerator (CCA) for CRM 2011 Blog bot Dynamics CRM: Blogs 3 23.12.2011 09:16
CRMScape: Connecting to MS CRM 2011 outside the VM Blog bot Dynamics CRM: Blogs 0 26.09.2010 21:06
Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 18:50.
Powered by vBulletin® v3.8.5. Перевод: zCarot
Контактная информация, Реклама.