Вопрос

Я должен опубликовать некоторые параметры в URL-адресе за пределами моей сети, и разработчики с другой стороны попросили меня не использовать HTTP-параметры:вместо этого я должен опубликовать свои ключевые значения в HTTP - Заголовки.

Дело в том, что я на самом деле не понимаю, что они означают:Я попытался использовать сообщение, подобное ajax, с объектами XmlHttp, а также я попытался написать в заголовке что-то вроде

Request.Headers.Add(key,value);

но я не могу (исключение из фреймворка);Я попробовал наоборот, используя объект Response, например

Response.AppendHeader("key", "value");

а затем перенаправьте на нужную страницу...но и это тоже не работает.

По-моему, очевидно, что я там застрял, есть какая-нибудь помощь?


Редактировать Я забыл сказать вам, что моей средой является .Net 2.0, c #, на Win server 2003.Исключение, которое я получил, это

System.PlatformNotSupportedException was unhandled by user code
  Message="Operation is not supported on this platform."
  Source="System.Web"

Похоже, это вызвано моим предварительным запросом to.Добавлю, MS год назад опубликовала несколько исправлений безопасности, которые этого не позволяют.

Это было полезно?

Решение

Как сказал @lassevk, перенаправление не будет работать.

Вы должны использовать класс WebRequest для выполнения HTTP POST со своей страницы или приложения. здесь есть пример .

Другие советы

Вы пробовали класс WebClient? Пример может выглядеть так:

        WebClient client = new WebClient();
        NameValueCollection data = new NameValueCollection();
        data["var1"] = "var1";
        client.UploadValues("http://somewhere.com/api", "POST", data);

Взгляните на HttpWebRequest. Вы должны иметь возможность создать запрос к URL-адресу, о котором идет речь, используя HttpWebRequest.Method = & Quot; POST & Quot;.

Вы должны опубликовать больше информации.

Например, это C #? Похоже, но я могу ошибаться.

Кроме того, вы говорите, что получаете исключение, каков тип исключения и сообщение?

В любом случае вы не можете перенаправить на страницу для POST, вам нужно отправить ее из браузера, а не из сервера перенаправления, поэтому, если вы хотите автоматизировать это, я думаю, вам нужно сгенерировать HTML-страница с тегом формы, с некоторыми скрытыми полями ввода, а затем отправьте его с помощью JavaScript.

Я думаю, они имеют в виду, что они не хотят, чтобы вы использовали параметры URL (GET). Если вы используете заголовки http, на самом деле это больше не запросы через POST.

Какой язык / рамки?

Используя Python и httplib2, вы сможете сделать что-то вроде:

http = httplib2.Http()
http.request(url, 'POST', headers={'key': 'value'}, body=urllib.urlencode(''))

Я считаю, что объект Request будет принимать только определенный набор предопределенных заголовков.

Существует перечисление, в котором также перечислены все поддерживаемые заголовки HTTP.

Но я не могу вспомнить это сейчас ... Я посмотрю это через секунду ...

Я протестировал ваш сценарий, используя 2 примера страниц, используя опцию XMLHttpRequest.Пользовательские заголовки доступны на странице aspx, размещенной на, используя XMLHttpRequest.

Создайте следующие 2 страницы.Убедитесь, что страница aspx находится в решении, чтобы вы могли запустить ее в отладчике, установить точку останова и проверить запрос.Коллекция заголовков.

<html>

<head>

&lt; script language="javascript"&gt;

function SendRequest()
{
    var r = new XMLHttpRequest();
    r.open('get', 'http://localhost/TestSite/CheckHeader.aspx');
    r.setRequestHeader('X-Test', 'one');
    r.setRequestHeader('X-Test', 'two');
    r.send(null);

}
&lt; script / &gt;

</head> <body> <form> <input type="button" value="Click Me" OnClick="SendRequest();" /> </form> </body> </html>


CheckHeader.aspx

использование Системы;

использование системы.Веб;

использование System.Web.UI;

открытый частичный класс CheckHeader :System.Web.UI.Страница

{

protected void Page_Load(object sender, EventArgs e)
{
    string value = string.Empty;
    foreach (string key in Request.Headers)
        value = Request.Headers[key].ToString();
}

}

Человек..Этот html-редактор - отстой..или я не знаю, как им пользоваться...

Исключение, с которым я столкнулся вчера, было вызвано моей глупой попыткой записи в заголовки уже созданной страницы.

Когда я начал создавать свой запрос, следуя одному из указанных здесь способов, я мог написать свои заголовки.

Теперь я использую объект WebRequest, как в примере, указанном @sectrean, .

Большое спасибо всем. StackOverflow порождает: -)

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top