cURL snippet with double quotes adds a backslash before every # character

Aperta Adatta ai principianti
#822 1 commento 0 reazioni 0 assegnatari Vedi su GitHub

@sebxt ci sta già lavorando.

Dal 19/10/2026.

  • #823 di @sebxt — aperta
  • #824 di @gopi-701 — aperta

Valutazione

Difficoltà
2/5
Tempo stimato
1-3 ore
Idoneità per principianti
78/100
Tipo di issue
Bug
Chiarezza
Specificata chiaramente
Stato di attività
Attiva
Stack tecnologico
bash, javascript, node.js, zsh
Ambito
backend, cli

Direzione di ricerca

Inizia da codegens/curl/lib/util.js ed esamina sanitize per l’opzione delle virgolette doppie; confronta la gestione di # con il comportamento di escaping della shell descritto nell’issue. Controlla i test esistenti del generatore cURL per gli snippet tra virgolette e aggiungi test per un URL, un valore di header o un corpo JSON contenente #. Il lavoro è completato quando lo snippet generato conserva # e il corpo della richiesta rimane JSON valido.

Scritto dal modello di indicizzazione a partire dal testo della issue.

Descrizione

Describe the bug
Affected codegen: curl, with the quoteType option set to double.

sanitize in codegens/curl/lib/util.js replaces # with \# when the quote type is double. Inside double quotes, neither bash, zsh nor cmd.exe treats \# as an escape, so the backslash is kept and sent to the server. Any URL, header value or body containing # is changed. A JSON body such as {"color": "#fff"} becomes {"color": "\#fff"}, which is not valid JSON.

To Reproduce

var sdk = require('postman-collection'),
  curl = require('./codegens/curl');

var request = new sdk.Request({
  method: 'POST',
  url: 'https://postman-echo.com/post',
  header: [
    { key: 'Content-Type', value: 'application/json' },
    { key: 'X-Color', value: '#fff' }
  ],
  body: { mode: 'raw', raw: '{"color": "#fff"}' }
});

curl.convert(request, { quoteType: 'double' }, function (err, snippet) {
  console.log(snippet);
});

Output:

curl --location "https://postman-echo.com/post" \
--header "Content-Type: application/json" \
--header "X-Color: \#fff" \
--data "{\"color\": \"\#fff\"}"

Running it in bash, postman-echo reports "x-color": "\#fff", "data": "{\"color\": \"\#fff\"}" and "json": null, because the body no longer parses.

Expected code snippet and corresponding request

curl --location "https://postman-echo.com/post" \
--header "Content-Type: application/json" \
--header "X-Color: #fff" \
--data "{\"color\": \"#fff\"}"

With this snippet the server receives #fff and the JSON body parses.

Additional context
The # replacement was added in #734 together with the escaping of `, $ and !. Inside double quotes, a POSIX shell only removes a backslash that comes before $, `, ", \ or a newline. # only starts a comment at the beginning of an unquoted word, so it needs no escaping inside quotes.

Version of postman-code-generators: develop at 7298195 (v2.1.1)

Lingua principale
JavaScript
Stelle
1k
Fork
381
Metriche di merge delle PR
Nessuna PR unita negli ultimi 30g

Preparare l'ambiente

Come iniziare

  1. Leggi tutta la issue e poi la guida ai contributi del progetto.
  2. Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
  3. Fai un fork del repository e lavora su un branch.
  4. Apri una pull request che faccia riferimento al numero della issue.

Altre issue di postmanlabs/postman-code-generators

Tutte le issue di postmanlabs/postman-code-generators

Issue simili

Altre issue su JavaScript

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.