Kong / Kong/insomnia

'$' been encoded to '%24' when using application/x-www-form-urlencoded

Open
#9,080 1 comment 0 reactions 0 assignees View on GitHub
B-bug S-unverified
Dominant language
TypeScript
Stars
40k
Forks
2.4k
Avg merge
2d 13h
Merged PRs (30d)
61

Description

### Expected Behavior

The '$' should not be encoded.

Here is the expected:
> POST /token HTTP/2
> Host: a.test.domain
> content-type: application/x-www-form-urlencoded
> user-agent: insomnia/11.0.2
> accept: */*
> content-length: 11

* TLSv1.2 (OUT), TLS header, Supplemental data (23):

| testKey=$

### Actual Behavior

In the request body, the '$' been encoded to "%24".

Console output:
> POST /token HTTP/2
> Host: a.test.domain
> content-type: application/x-www-form-urlencoded
> user-agent: insomnia/11.0.2
> accept: */*
> content-length: 11

* TLSv1.2 (OUT), TLS header, Supplemental data (23):

| testKey=%24

### Reproduction Steps

1. Create a post request
2. Set Body type to "application/x-www-form-urlencoded"
3. Add a test key-value pari: testKey=$
4. Send the request and see the output in console

### Is there an existing issue for this?

- [x] I have searched the [issue tracker](https://www.github.com/Kong/insomnia/issues) for this problem.

### Which sync method do you use?

- [ ] Git sync.
- [ ] Insomnia Cloud sync.
- [x] Local only

### Additional Information

Currently a workaround is to use "text/plain" as content type and change "Content-Type" header to "application/x-www-form-urlencoded"

### Insomnia Version

11.5.0

### What operating system are you using?

Windows

### Operating System Version

Windows 11 Version 24H2 OS Build 26100.5074

### Installation method

download from insomnia.rest

### Last Known Working Insomnia version

_No response_

Contributor guide

Open the contributing guide

Research direction

No source file or test is named in the issue. First reproduce the request using an application/x-www-form-urlencoded body containing testKey=$, then trace Insomnia's form-body encoding path. Done means the sent body preserves $ as testKey=$ rather than changing it to testKey=%24, with regression coverage if the relevant test area is found.

Written by the indexing model from the issue text.

Assessment

Tech stack
typescript
Domain
api
Issue type
Bug
Difficulty
3/5
Estimated time
1-2 days
Activity status
Stale
Clarity
Mostly clear
Newbie friendliness
38/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.