strlen () на non-null-terminated символьной строке?

@ user268396 рассказал вам, почему, и я расскажу вам, как.

«Access-Control-Allow-Origin» означает источник, которому вы разрешили сделать запрос на этот сервер.

Это может быть в таких формах, как:

"Access-Control-Allow-Methods" должно быть [] string ("POST", "OPTION"), если вы хотите разместить данные из CORS.

Когда дело доходит до Голанга, см. Godoc https://golang.org/pkg/net/http/#Header

type Header map[string][]string

И я всегда предлагаю использовать [114 ] вместо Header.Set(), если вы точно не знаете, что делаете. Потому что каждое значение в заголовке всегда будет [] строкой.

Так и должно быть

    res.Header().Add("Access-Control-Allow-Origin", "*")
    res.Header().Add("Access-Control-Allow-Methods", "POST")
    res.Header().Add("Access-Control-Allow-Methods", "OPTION")
    res.Header().Add("Content-Type", "application/json")

27
задан sth 9 June 2010 в 14:17
поделиться

9 ответов

Нет, это не определяется. Это может привести к нарушению доступа к памяти, поскольку это будет продолжать рассчитывать, пока это не достигнет первого байта памяти, значение которого 0.

36
ответ дан Hosam Aly 28 November 2019 в 05:03
поделиться

Из стандарта C99:

функция strlen возвращает количество символов, которые предшествуют завершающемуся нулевому символу.

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

9
ответ дан MSN 28 November 2019 в 05:03
поделиться

Можно ли быть потребностью strnlen?

5
ответ дан vitaly.v.ch 28 November 2019 в 05:03
поделиться

Едва ли, и это вызовет плохие вещи .

2
ответ дан Devin Jeanpierre 28 November 2019 в 05:03
поделиться

Если Ваша строка не будет завершенным NUL, то функция будет продолжать смотреть, пока это не найдет тот.

, Если Вы удачливы, это заставит Вашу программу отказывать.

, Если Вы не удачливы, Вы получите большее, чем ожидаемая длина назад с большим количеством 'неожиданных' значений в нем.

2
ответ дан EvilTeach 28 November 2019 в 05:03
поделиться

Это возвратит количество символов, с которыми встречаются, прежде чем '\0' будет найден.

1
ответ дан David Segonds 28 November 2019 в 05:03
поделиться

Это не определяется. Это вызывает неопределенное поведение, что означает, что что-либо может произойти, скорее всего, Ваша программа откажет.

1
ответ дан Roland Rabien 28 November 2019 в 05:03
поделиться

strlen () только работает (делает что-то полезное) на завершенных пустым указателем строках; Вы получите совершенно неопределенный результат, если Вы передадите в чем-нибудь кроме этого. Если Вы будете удачливы, то это не вызовет катастрофический отказ:)

0
ответ дан Nik 28 November 2019 в 05:03
поделиться

Это всегда определяется.

Это возвратит длину "строки", пока это не достигнет байта с пустым указателем в нем. Плохая идея, потому что это может вызвать переполнение буфера.

-2
ответ дан Daniel A. White 28 November 2019 в 05:03
поделиться
Другие вопросы по тегам:

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