01.11.2012, 18:13 | #1 |
Участник
|
Отправка запроса при сохранении формы ms crm 2011
Добрый день! Столкнулся с такой проблемой. При сохранении формы нужно отправлять запрос на сервер http://myserver/vs=XXXX
Пишу код : X++: var xhttp = new XMLHttpRequest(); xhttp.open("GET", " http://myserver/vs=XXXX", true); xhttp.send(); |
|
01.11.2012, 19:11 | #2 |
Участник
|
Скорее всего, у Вас идет запрос к другому домену, это запрещено.
Почитайте эту статью: http://javascript.ru/ajax/cross-domain-scripting |
|
|
За это сообщение автора поблагодарили: NoTimeToCry (1). |
01.11.2012, 20:34 | #3 |
Участник
|
Засунул код в try catch, в итоге вот что получил.
alert(exception.name) даёт ошибку TypeError alert(exception.message) - Access Denied |
|
01.11.2012, 22:49 | #4 |
Чайный пьяница
|
Вам уже ответили, что проблема в кроссдоменнов вызове. 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 |
Участник
|
Цитата:
Сообщение от a33ik
Вам уже ответили, что проблема в кроссдоменнов вызове. try/catch тут не спасут.
Первое, что я вам посоветую, посмотрите следующие статьи: http://mscrmshop.blogspot.ru/2012/07...ls-part-1.html http://mscrmshop.blogspot.ru/2012/07...ls-part-2.html Если это вам не поможет советую придумать как перенести вызов из клиентской части (скриптов) в серверную (плагины или кастомные варкфловные действия). UPD ещё раз перечитал первое сообщение - вешайте вызов внешнего сервиса в плагин и забудьте о проблемах! |
|
02.11.2012, 11:08 | #6 |
Moderator
|
Потому что 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 |
Участник
|
Всем привет. Хотелось бы уточнить. Отправляю кроссдоменный запрос из плагина.
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 |
Чайный пьяница
|
Всё зависит от типа аутентификации используемого в сервисе, который вы используете. Если аутентификации нет вообще, то Credentials заполнять вообще не надо.
__________________
Эмо разработчик, сначала пишу код, потом плачу над его несовершенством. Подписывайтесь на мой блог, twitter и YouTube канал. Пользуйтесь моим Ultimate Workflow Toolkit |
|
08.11.2012, 12:46 | #9 |
Участник
|
Там есть авторизация. Но при попытке отправки получаю 401. Сейчас у меня 2 подозрения, почему так. Первое, это потому что у этих учетных данных нету доступа. Второе - потому что я не указал домен.
|
|
08.11.2012, 12:54 | #10 |
Заноза в заднице
|
Скорее всего ничего сложного не будет проверить, просто добавив имя домена в аргументы. А так по логике домен конечно нужен, потому что учетные данные могут проверяться по-разному и иметь различные настройки в том или ином домене. Однако, нужно понимать: есть ли заданное имя пользователя в требуемом домене вообще.
__________________
Лень мудрого человека - это необходимое средство нейтрализации кипучей активности руководящих им дураков! |
|
|
За это сообщение автора поблагодарили: NoTimeToCry (1). |
08.11.2012, 17:31 | #11 |
Участник
|
Ребят, а как можно пройти кастомную авторизацию? Оказалось что авторизация для сайта, куда я отправляю запрос не виндовая. То есть
X++: request.Credentials = new NetworkCredential("user","password") |
|
08.11.2012, 20:46 | #12 |
Участник
|
Ребят, как можно пройти авторизацию на кастомном сайте? Делаю из плагина. Хотел попробовать через класс c# WebBrouser писать логин и пассворд в поля на страничке с авторизацией, но такое не прокатит. Потому что это плагин, а WebBrouser класс выведенный из Windosw.Forms. И Если пытаться залогиниться через страницу авторизации, то сервер не пустит запрос. Потому что авторизация разрешена только для определенной ссылки на сайт. И как в таком случае отправить запрос с авторизацией я не представляю( Подскажите пожалуйста.
|
|
08.11.2012, 22:46 | #13 |
Участник
|
Цитата:
Но похоже, что речь идет об обычной Forms авторизации. В этом случае нужно сделать 2 HttpWebRequest. Первым отправить логин и пароль, вторым уже данные. Но чтобы они были в одной сессии, нужно кукиес с респонса первого реквеста установить у второго. |
|
|
За это сообщение автора поблагодарили: a33ik (1), NoTimeToCry (1). |
08.11.2012, 22:48 | #14 |
Участник
|
Хакерский способ посмотреть фидлером, что отправляется на сайт с твоего компа и сделать аналогичные действия. Точно знаю, что это делатется определенными товарищами для подобных целей.
|
|
|
За это сообщение автора поблагодарили: a33ik (1), NoTimeToCry (1). |
09.11.2012, 09:28 | #15 |
Заноза в заднице
|
Цитата:
Сообщение от Anros
Не совсем понял, что тут написано
Но похоже, что речь идет об обычной Forms авторизации. В этом случае нужно сделать 2 HttpWebRequest. Первым отправить логин и пароль, вторым уже данные. Но чтобы они были в одной сессии, нужно кукиес с респонса первого реквеста установить у второго. Хотя по поводу CookieContainer я согласен - вариант можно испробовать.
__________________
Лень мудрого человека - это необходимое средство нейтрализации кипучей активности руководящих им дураков! |
|
|
|