Сторона сервера включает (ssi) на сервере IIS, чтение данных запроса POST не выполняется

Моя цель состоит в том, чтобы мой SSI (shtml) анализировал параметры данных POST и возвращал длинную зашифрованную строку, которая будет основана на этих параметрах. Я использую IIS в качестве сервера.

Мои ограничения:

  1. Я не могу изменить URL - /document.shtml
  2. shtml должен возвращать только результат строки base 64.

Что я пробовал:

  1. Использование «exec cgi» в shtml следующим образом:

документ.shtml:

<!--#exec cgi="/pythonApp/test.py?sdfsdf=sdfsdf" -->

test.py (упрощенная версия, без логики шифрования):

import cgitb
cgitb.enable()
import base64,urllib,json,os,sys
import cgi

print "Content-Type: text/plain;charset=utf-8"
print

cl, _ = cgi.parse_header(os.environ['CONTENT_LENGTH'])
if (int(cl)>0):
	data = sys.stdin.read(int(cl))
	input_j = json.loads(data)

	print "AB : ",input_j["AB"] 
else:
	print "Failed to read POST request"

Проблема здесь в том, что если я отправлю запрос на публикацию в .../test.py , то он сработает, но если я отправлю запрос в document.shtml, длина содержимого все равно будет положительной, как описано в переменной среды, но стандартный ввод получит ошибку.

  1. Моя другая идея заключалась в том, чтобы как-то прочитать данные POST из самого shtml и передать их в cgi следующим образом:

<!--#exec cgi="/pythonApp/test.py?sdfsdf=sdfsdf" -->

Проблема в том, что я просмотрел сеть и не нашел способа сделать это из shtml.

Какие-либо предложения? я пропустил что-то простое?


person Michael    schedule 26.09.2015    source источник


Ответы (1)


Я не нашел, как это сделать с помощью директивы SSI, я понял, что стандартный ввод не передается в cgi из основного скрипта.

Поэтому я нашел другое решение, которое все еще отвечает моим ограничениям.

В сопоставлении обработчика IIS для SHTML я настроил исполняемый файл как php.

и в самом shtml я написал php-код (показывая здесь только образец, который печатает строку json):

<?php var_dump($HTTP_RAW_POST_DATA); ?>

person Michael    schedule 26.09.2015