Как сделать междоменный вызов AJAX POST из веб-части Sharepoint? - PullRequest
2 голосов
/ 30 сентября 2010

Мне нужно вызывать (HTTP) REST API как вызов POST - в основном, это позволяет мне публиковать сообщения на форуме / сообществе.

Поскольку в настоящее время нет способа аутентификации черезAPI, мне нужно зависеть от куки браузера.т.е. пользователь должен войти в сообщество и затем использовать вызовы API.Это означает, что серверные прокси исключены.

И поскольку это вызов POST, JSONP также исключается, даже если он поддерживается сервером API.

Так что этот вызов POSTдолжен быть на 100% javascript.

Этот JS в конечном итоге станет частью веб-части в Sharepoint, поэтому я не хочу усложнять его с помощью iframes.

Хорошо?

1 Ответ

3 голосов
/ 30 сентября 2010

Единственный способ сделать междоменный POST - это написать скрипт:

<iframe name="iframe"></iframe>
<form id="foo" target="iframe" method="POST" action="http://...">
    <input type="hidden" name="parameter 1" value="bar"/>
    ...
</form>
<script type="text/javascript">
    ...
    document.getElementById('foo').submit();
</script>

Вы не сможете прочитать ответ в iframe из-за той же политики происхождения, ноБудет выполнено POST.

Любой форум, который знает, что он делает, отклонит этот запрос.В противном случае любой, кто посетил сторонний сайт, может автоматически отправлять сообщения на форум против своей воли.Это известно как подделка межсайтовых запросов (XSRF) и является постоянной проблемой веб-безопасности.Большинство администраторов форума сочли бы приведенный выше код враждебным.

Защищенные форумы используют токен анти-XSRF для каждого действия, чтобы предотвратить вышесказанное, по сути, требуя, чтобы сообщения создавались из формы на самом сайте, а не изсторонний сайт.Поскольку вы не можете прочитать документ, включенный в междоменный домен, вы не можете ущипнуть токен, поэтому не можете авторизовать сообщение.

...