Bug report: "HTTP request" cannot read some binary data well
- Dominant language
- JavaScript
- Stars
- 35.8k
- Forks
- 4.1k
- Avg merge
- 2d 26m
- Merged PRs (30d)
- 33
Description
**Describe the bug**
"HTTP request" sometimes fails to load correct data and replaces some part of data with `ef bf bd` (�).
**To Reproduce**
Steps to reproduce the behaviour or a link to the recipe / input used to cause the bug:
1. Use "HTTP request" with URL `https://placehold.jp/150x150.png` and default configuration.
2. It fails due to cross-origin request, so use [CORS Everywhere](https://addons.mozilla.org/ja/firefox/addon/cors-everywhere/) (Firefox extension) to disable the limitation.
3. [Use "Render Image" after that](https://gchq.github.io/CyberChef/#recipe=HTTP_request%28%27GET%27,%27https://placehold.jp/150x150.png%27,%27%27,%27Cross-Origin%20Resource%20Sharing%27,false%29Render_Image%28%27Raw%27%29), seeing it shows "Invalid file type"
4. [Use "To Hex"](https://gchq.github.io/CyberChef/#recipe=HTTP_request%28%27GET%27,%27https://placehold.jp/150x150.png%27,%27%27,%27Cross-Origin%20Resource%20Sharing%27,false%29To_Hex%28%27Space%27,0%29) to see wrong data `ef bf bd` inserted.
**Expected behaviour**
"HTTP request" should successfully fetch data from external site without changing any part of that to `ef bf bd` and "Render Image" should successfully show the image.
I [feeded the image data to "Render Image"](https://gchq.github.io/CyberChef/#recipe=From_Hex%28%27Auto%27%29Render_Image%28%27Raw%27%29&input=ODk1MDRlNDcwZDBhMWEwYTAwMDAwMDBkNDk0ODQ0NTIwMDAwMDA5NjAwMDAwMDk2MDgwMDAwMDAwMDE5NmEyZTNlMDAwMDAwMDQ2NzQxNGQ0MTAwMDBiMThmMGJmYzYxMDUwMDAwMDAyMDYzNDg1MjRkMDAwMDdhMjYwMDAwODA4NDAwMDBmYTAwMDAwMDgwZTgwMDAwNzUzMDAwMDBlYTYwMDAwMDNhOTgwMDAwMTc3MDljYmE1MTNjMDAwMDAwMDI2MjRiNDc0NDAwZmY4NzhmY2NiZjAwMDAwMDA3NzQ0OTRkNDUwN2U1MDcwMjEyMWMxZmU2YTkxM2JjMDAwMDAyNjg0OTQ0NDE1NDc4ZGFlZGQ1ZGQ3MmEyMzAwMDA1ZTBiZWZmMWI5YzQ0YWQ4MDVhYWJkYmZhYjNhM2FkMmU1MGZmYTFjMDQzNmQwMDgxZWM0Y2JiMTViODMwMTdlN2RjNDg4MDM5N2UwNjEzMWUxMjIzZjM3MDZmMDA1OTY0OTE0NTE2NTk2NDE5MTJiMmM4MjJjYjg0OTA0NTE2NTkyNjg0MmNiMmM4MzIyMTY0OTE0NTk2MDkyMThiMmNiMjRjMDg1OTY0OTE2NTQyYzgyMjhiMmMxMzQyMTY1OTY0OTkxMGIyYzhiYTAzZWIwNWQ3ODMzZDhhZjhlOTMwN2UxYjc0ZTRlMDJkYmVhOWJmNjFjOWY3YWNjZjRlZDFiOGZkYTczMTFhZTVjN2EzZTgwNjU1ZDM5MjZmNTllMTE4NDVlMzEyMjMzZjRmYTg0NjMzYzhkNTI5Nzg5Mzk4ZmRhYzZhNWNmMjM1MmI5ODNmNDk5NDhkNTMyY2I0NGI4MDliN2VmZTgxMDhmZTZmNmE1M2YyMzU2Yjk3NGZmMTc1MzRjMGE2YmFiNDQyM2YzZjc4YzRhYTljOTQxZTdlNjcwNzJmYjBlM2E2MjUzN2IwYTJlM2YxZTg5NjhkMWRlY2FiNGJjZjk4ZTcwNzczNGNjYTkzMmVjNDUxN2Q3Y2U0MWYwZDRiN2U2NmE1MzkxNThkMjFmMGYxZGMxM2Y2YWY3MzNhYjJiMGNkNGY2ZjYxNTUzNzRmMzE4ODkzYTg3ZjlkYjQ4NjI1ZjU1OGU1ZDI5NmVmZDlhZmY2ZjNkMzNlYmFkNWNkNjExN2ViNjQ5MWRhNWE5NGQ0NjM2ZDAwZGIwYjAyY2ZjZTFlOTFjMDIxM2Y3ZDgwZDBlZTc2MjE1ZDIxNGVlZDRhNmFiMWZjZDc2NWI2YmJjNDM2YzY0OTIyYWI0NmE5ZGYzZTU1MzNiMTZhNWI1Mjg3NTVjNjRiNjdiYzVmY2Q3ZjVmYmZhODFlYTMxM2I3MmQ2OWM0NTJiYjRkOTAwY2FiN2ZlYjUwYmY3ODEwOTA5N2I2MjU4ZDU4NjFkYTM4MjliNmM1MjVhNmRhYjVjODQyMTc0ZjJkNGJlYWIwNjJlYjcxNWJjY2I4OWFmZjc1YjFhNDJkYjVmNmFhMmNlMDljYTViZTYzMzYyOWE5MzU1YjYzNTg5ZjU5YjU4M2Q3MjRiOTA4ZWNkMmQxMGU0MjdiNjZmYjc0ODFhZGQxMDlkYTk0ZDQ2M2E5MmRjN2YxODI4YmU3YTA5Yjc2Y2NkMGYzYTJjNGVmZTk2ZjU5ZjUwODE3ZDk1NzRlNWE5NGQ0NjQyNTFiOTFlZjg0ZGRlYzE3NDY0MzQwYTg3N2YwNDg1Yjc3NzM1OGU5ZjI1NzdmN2JiNzc5NDk1ZDU2NzI5ZTU5NTJkYThiMzAxZmM1NmI0NzRhNjdhZDE1YWE5N2YyZWVjYWViODU0ZDRiNmU2NGRkMzU2NDkxNDU5NjA5MjE4YjJjYjI0YzA4NTk2NDkxNjU0MmM4MjI4YjJjMTM0MjE2NTk2NDk5MTBiMmM4MjJjYjg0OTA0NTE2NTkyNjg0MmNiMmM4MzIyMTY0OTE0NTk2MDkyMThiMmNiMjRjMDg1OTY0OTE2NTQyZmUwMjNlOGJhNjBjYzM2NmVlNGMwMDAwMDAyNTc0NDU1ODc0NjQ2MTc0NjUzYTYzNzI2NTYxNzQ2NTAwMzIzMDMyMzEyZDMwMzcyZDMwMzM1NDMwMzMzYTMyMzgzYTMzMzEyYjMwMzkzYTMwMzBkYmMzZWJhZDAwMDAwMDI1NzQ0NTU4NzQ2NDYxNzQ2NTNhNmQ2ZjY0Njk2Njc5MDAzMjMwMzIzMTJkMzAzNzJkMzAzMzU0MzAzMzNhMzIzODNhMzMzMTJiMzAzOTNhMzAzMGFhOWU1MzExMDAwMDAwMDA0OTQ1NGU0NGFlNDI2MDgy) after fetching the data via this Python script:
```py
import urllib.request
handle = urllib.request.urlopen("https://placehold.jp/150x150.png")
data = handle.read()
handle.close()
dump = ""
for c in data:
dump += "%02x" % c
print(dump)
```
to make sure that "Render Image" supports the image data. It successfully showed the image.
**Desktop (if relevant, please complete the following information):**
* Version: 9.28.0
* Compile time: 26/03/2021 14:12:01 UTC
* User-Agent:
Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:89.0) Gecko/20100101 Firefox/89.0
* Browser: Firefox 89.0.2 (x64)
* OS: Windows 10 Home 20H2
Contributor guide
Research direction
Start at the HTTP request operation and reproduce the supplied placehold.jp recipe, then compare its output with the Python byte dump using To Hex. The work is done when the fetched PNG bytes remain unchanged and the following Render Image operation displays the image successfully.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- javascript
- Domain
- frontend, web-dev
- Issue type
- Bug
- Difficulty
- 3/5
- Estimated time
- 1-2 days
- Activity status
- Stale
- Clarity
- Clearly specified
- Newbie friendliness
- 38/100