2014-02-20 4 views
0

В дополнение к своей функции входа в систему (TBD) я хочу, чтобы мое приложение AngularJS могло принимать токен из другого приложения в качестве действительной альтернативы входа. Я не хочу, чтобы этот маркер был видимым в параметрах URL/GET, если это возможно, но я не нашел способ обработать параметры POST. В настоящее время приложение загружается через HTML5. Я хочу избежать сценариев, но PHP и Python - это не невозможность.передать конфиденциальную информацию в одностраничное приложение AngularJS

Есть ли способ в угловом для получения параметра POST?

+0

Какой параметр POST вы говорите? Что такое POSTing? –

+0

входящий POST из другого веб-приложения в мой AngularJS SPA – N13

ответ

3

Невозможно получить параметр POST в приложении с одной страницей, потому что вы не можете отправлять POST клиенту, как веб-браузер; вы можете только POST на сервер.

См this question.

Когда вы делаете запрос POST, сервер интерпретирует переменные и возвращает ресурс (как HTML страницы) в ответ. Эта страница по умолчанию не имеет доступа ни к одному из заголовков или данных в запросе, который породил ее. Единственная причина, по которой вы можете получить доступ к параметрам GET, - это то, что JavaScript может проверять URL загруженной страницы, где происходит сохранение параметров.

Некоторые серверные скрипты понадобятся, но это не должно быть слишком сложно. Быстрый и грязный ответ будет использовать сценарии сервера, чтобы вводить POST Params в код JavaScript (например, в PHP)

echo "<script>doSpecialLogin(".$_POST['superSecretKey'].");</script>" 

Однако я хотел бы также настоятельно рекомендую вам потратить некоторое время, чтобы убедиться, что ваш метод на самом деле безопасен и, возможно, изучает такие технологии, как OAuth.

+0

Это то, что я понял, но стоит спросить. Бонусные очки для OAuth. – N13

0

HTTP-запрос отправляется с клиента на сервер. Вы можете отправить данные обратно клиенту с сервера двумя способами: заголовками и телом ответа. Он работает точно так же как для POST, так и GET, с той разницей, что вы также можете отправить тело запроса с помощью POST.

Предположим, вы используете AngularJS's $http.

$http.get(url) отправляет запрос GET на сервер. Вы регистрируете ответ с помощью .success(callback), где вызывается обратный вызов с параметром, представляющим тело ответа.

$http.post(url, requestData) делает то же самое с requestData, являющимся объектом запроса отправленного.

Где

function callback(responseBody) { 
} 

стороне сервера, в PHP, все, что ваши выходы скрипт отправляется обратно клиенту и параметр responseBody будет содержать его.

Так, с POST, вы используете тело запроса для передачи данных от клиента к серверу и тело ответа для передачи данных от сервера к клиенту.

Весь этот «двухэтапный» процесс является HTTP POST-запросом.

Смежные вопросы