Как Вы вынуждаете веб-браузер использовать POST при получении URL?

Лучший ответ, который я когда-либо слышал об использовании обеспеченных псевдонимов типа в C#, появляется от Jeffrey Richter в его книжный CLR Через C#. Вот его 3 причины:

  • я видел много смущенных разработчиков, не зная, использовать ли строка или Строка в их коде. Поскольку в C# строка (ключевое слово) отображается точно на Систему. Строка (тип FCL), нет никакого различия, и любой может использоваться.
  • В C#, длинный карты к [1 111] Система. Int64, но на различном языке программирования, длинный мог отобразиться на Int16 или Int32. На самом деле C++ / CLI действительно на самом деле рассматривает долго как Int32. Кто-то читающий исходный код на одном языке мог легко неправильно истолковать намерение кода, если бы он привык программировать на различном языке программирования. На самом деле большинство языков не будет даже рассматривать длинный как ключевое слово и не скомпилирует код, который использует его.
  • FCL имеет много методов, которые имеют имена типов как часть их имен методов. Например, тип BinaryReader предлагает методы такой как [1 118] ReadBoolean, ReadInt32, ReadSingle, и так далее, и Система. Преобразуйте , тип предлагает методы такой как [1 122] ToBoolean, ToInt32, ToSingle, и так далее. Хотя законно записать следующий код, строку с чувствами плавающими, очень неестественными мне, и не очевидно, что строка корректна:
BinaryReader br = new BinaryReader(...);
float val  = br.ReadSingle(); // OK, but feels unnatural
Single val = br.ReadSingle(); // OK and feels good

, Таким образом, там у Вас есть он. Я думаю, что это все действительно положительные стороны. Я однако, не используют совет Jeffrey в моем собственном коде. Возможно, я также застреваю в своем мире C#, но я заканчиваю тем, что пытался заставить свой код быть похожим на код платформы.

37
задан Asaph 26 October 2011 в 17:21
поделиться

3 ответа

Use an HTML form that specifies post as the method:

<form method="post" action="/my/url/">
    ...
    <input type="submit" name="submit" value="Submit using POST" />
</form>

If you had to make it happen as a link (not recommended), you could have an onclick handler dynamically build a form and submit it.

<script type="text/javascript">
function submitAsPost(url) {
    var postForm = document.createElement('form');
    postForm.action = url;
    postForm.method = 'post';
    var bodyTag = document.getElementsByTagName('body')[0];
    bodyTag.appendChild(postForm);
    postForm.submit();
}
</script>
<a href="/my/url" onclick="submitAsPost(this.href); return false;">this is my post link</a>

If you need to enforce this on the server side, you should check the HTTP method and if it's not equal to POST, send an HTTP 405 response code (method not allowed) back to the browser and exit. Exactly how you implement that will depend on your programming language/framework, etc.

31
ответ дан 27 November 2019 в 04:28
поделиться

Если вы пытаетесь что-то протестировать, я бы предложил использовать Fiddler для обработки ваших HTTP-запросов. Это позволит вам указать команду действия (GET, POST, PUT, DELETE и т. Д.), А также содержимое запроса. Если вы пытаетесь протестировать очень конкретный запрос по ссылке, но вместо этого с помощью POST, вы можете отслеживать запросы, которые делает ваш браузер, и повторно отправлять их только с помощью измененного действия POST.

4
ответ дан 27 November 2019 в 04:28
поделиться
<form method="post">

If you're GETting a URL, you're GETting it, not POSTing it. You certainly can't cause a browser to issue a POST request via its location bar.

21
ответ дан 27 November 2019 в 04:28
поделиться
Другие вопросы по тегам:

Похожие вопросы: