Когда должен я использовать ДОБРАТЬСЯ или метод POST? Каково различие между ними?

Позвольте мне в этом разобраться.

«Матрица в CSV представляет собой массив пустых значений».

Не обязательно. Если ваш файл является файлом .csv, то вы можете использовать пакет csv и импортировать данные следующим образом:

import os
import csv

root = r'C:\path\to\my\csv\file'
input_file_name = r'input_data.csv'
output_file_name = r'new_data.csv'

input_path = os.path.join(root, input_file_name)
output_path = os.path.join(root, output_file_name)

Импортировать наши данные:

with open(input_path, 'r', newline ='') as f:
    csv_reader = csv.reader(f, delimiter=',')
    data = [i for i in csv_reader]
f.close()

Тогда вы есть список списков (который похож на массив, но является типом данных списка в Python):

[[' 1', '2', '3'], [' 4', '5', '6'], [' 7', '8', '9']]

Вот наши значения y, которые я предположил, были целыми числами:

y = [56,76,87]

[1115 ] Я позаимствовал здесь полезную функцию: Преобразование элементов списка вложенных списков из строки в целое в python

def int_conversion(my_list):
    return [int(x) if not isinstance(x, list) else int_conversion(x) for x in my_list]

Наша функция выполняет преобразование некоторых типов данных, но выводит целочисленные значения:

def process_data(my_data=data):
    # copy the raw data list
    new_data = my_data

    # Convert our y values to stings for processing
    y_1 = [str(i) for i in y]

    # Insert each value of our y list at the first spot in each sublist
    for i in range(len(my_data)):
        new_data[i].insert(0, y_1[i])

    # Insert a '0' placeholder at the start of our y list
    y_1.insert(0, '0')

    # Insert the y list as a sublist in our main data list
    new_data.insert(0, y_1)

    # Convert the list values to integers
    new_data = int_conversion(new_data)

    # Replace the first value in the first sublist with a null (None) value
    new_data[0][0] = None

    # Return the results
    return new_data

Обработать, а затем записать вывод:

data = process_data()

with open(output_path, mode='w', newline='') as xyz:
    writer = csv.writer(xyz)
    writer.writerows(data)

Тогда ваш файл должен выглядеть примерно так:

,56,76,87
56,1,2,3
76,4,5,6
87,7,8,9

234
задан Community 23 May 2017 в 02:26
поделиться

8 ответов

Это не вопрос безопасности. Протокол HTTP определяет запросы ПОЛУЧАТЬ-ТИПА, как являющиеся идемпотентом, в то время как СООБЩЕНИЯ могут иметь побочные эффекты. Без обиняков это означает, что ДОБИРАЮТСЯ, используется для просмотра чего-то, не изменяя его, в то время как POST используется для изменения чего-то. Например, страница результатов поиска должна использовать, ДОБИРАЮТСЯ, в то время как форма, которая изменяет Ваш пароль, должна использовать POST.

Кроме того, обратите внимание, что PHP путает понятия немного. Запрос POST вводится от строки запроса и через тело запроса. ПОЛУЧИТЬ запрос просто вводится от строки запроса. Таким образом, запрос POST является надмножеством ПОЛУЧИТЬ запроса; можно использовать $_GET в запросе POST, и может даже иметь смысл иметь параметры с тем же именем в $_POST и $_GET это означает разные вещи.

Например, скажем, у Вас есть форма для редактирования статьи. Идентификатор статьи может быть в строке запроса (и, таким образом, доступный через $_GET['id']), но скажем, что Вы хотите изменить идентификатор статьи. Новый идентификатор может затем присутствовать в теле запроса ($_POST['id']). Хорошо, возможно, это не лучший пример, но я надеюсь, что он иллюстрирует различие между двумя.

247
ответ дан Community 23 November 2019 в 03:29
поделиться
  1. ДОБИРАЮТСЯ, метод является использованием для отправки менее уязвимых данных, тогда как метод POST является использованием для отправки уязвимых данных.
  2. Используя метод POST можно отправить большой объем данных, сравненный для ПОЛУЧЕНИЯ метода.
  3. Данные, отправленные, ДОБИРАЮТСЯ, метод видим в панели вверху браузера, тогда как данные отправляют метод по почте, невидимо.
3
ответ дан Honey 23 November 2019 в 03:29
поделиться

Доберитесь и методы Сообщения не имеют никакого отношения к технологии сервера, которую Вы используете, она работает то же в php, asp.net или рубине. ДОБЕРИТЕСЬ и POST часть протокола HTTP. Как отмеченная метка, POST более безопасен. Формы POST также не кэшируются браузером. POST также используется для передачи больших количеств данных.

10
ответ дан sarsnake 23 November 2019 в 03:29
поделиться

Причина использования POST при внесении изменений в данные:

  • веб-акселератор А как Google Web Accelerator нажмет, все (ПОЛУЧАЮТ) ссылки на странице и кэшируют их. Это очень плохо, если ссылки вносят изменения в вещи.
  • кэши браузера А ПОЛУЧАЮТ запросы поэтому, даже если пользователь нажимает на ссылку, она не может отправить запрос к серверу для выполнения изменения.
  • Для защиты сайта/приложения от CSRF необходимо использовать POST. К абсолютно безопасному Ваше приложение необходимо затем также генерировать уникальный идентификатор на сервере и отправить это вперед в запросе.

кроме того, не помещайте уязвимую информацию в строку запроса (только опция с ДОБИРАЕТСЯ), потому что она обнаруживается в строке поиска, закладках и журналах сервера.

, Надо надеяться, это объясняет, почему люди говорят, что POST 'безопасен'. При передаче уязвимых данных, необходимо использовать SSL.

8
ответ дан Sarel Botha 23 November 2019 в 03:29
поделиться

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

Использование ДОБИРАЕТСЯ, если Вы хотите, чтобы люди смогли отметить Вашу страницу, потому что все данные включены с закладкой.

Просто остерегаться людей, поражающих ОБНОВЛЕНИЕ ПОЛУЧИТЬ методом, потому что данные будут отправлены снова каждый раз, не предупреждая пользователя (POST иногда предупреждает пользователя о повторной отправке данных).

16
ответ дан Grant 23 November 2019 в 03:29
поделиться

Я использую, ДОБИРАЮТСЯ, когда я получаю информацию от URL и POST, когда я отправляю информацию в URL.

17
ответ дан Mark Biek 23 November 2019 в 03:29
поделиться

Существует два общих последствия "безопасности" к использованию, ДОБИРАЮТСЯ. Так как данные появляются в строке URL свое возможное, кто-то смотрящий через Ваше плечо в Строке поиска / URL может просматривать что-то, что они не должны быть посвящены в такой как сеансовые куки, которые могли потенциально использоваться для угона сессии. Следует иметь в виду , у всех есть телефоны с камерой.

другая импликация безопасности ДОБИРАЕТСЯ, имеет отношение, ПОЛУЧАЮТ переменные, зарегистрированные к большей части журнала доступа веб-серверов как часть URL запроса. В зависимости от ситуации регулирующего климата и общей чувствительности данных это может потенциально поставить вопросы.

Некоторые клиентские/брандмауэры/IDS системы могут осудить, ПОЛУЧАЮТ запросы, содержащие чрезмерный объем данных, и может поэтому обеспечить ненадежные результаты.

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

POST требует заголовка довольной длины, который может увеличить сложность специализированной клиентской реализации, как размер отправленных данных должен быть известен, заранее препятствуя тому, чтобы клиентский запрос был сформирован в исключительно однопроходном возрастающем режиме. Возможно, незначительная проблема для тех, которые выбирают злоупотребить HTTP при помощи его как RPC (Вызов удаленной процедуры) транспорт.

Другие уже сделали хорошее задание в покрытии семантических различий и "когда" часть этого вопроса.

20
ответ дан Arpit Parasana 23 November 2019 в 03:29
поделиться

Когда пользователь вводит информацию в форму и нажимает Submit, существует два способа, которыми информация может быть отправлена с браузера на сервер: в URL, или в теле Запроса HTTP.

ПОЛУЧИТЬ метод, который использовался в примере ранее, добавляет пары имя/значение к URL. К сожалению, длина URL ограничена, таким образом, этот метод только работает, если существует только несколько параметров. URL мог быть усеченным, если форма использует большое количество параметров, или если параметры содержат большие объемы данных. Кроме того, параметры передали URL, видимы в поле адреса браузера не лучшее место для пароля, который будет отображен.

альтернатива ПОЛУЧИТЬ методу является методом POST. Этот метод упаковывает пары имя/значение в теле Запроса HTTP, который делает для более чистого URL и не налагает ограничений размера на вывод форм. Это также более безопасно.

75
ответ дан SpringLearner 23 November 2019 в 03:29
поделиться
Другие вопросы по тегам:

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