Giter Club home page Giter Club logo

Comments (7)

EverlastingBugstopper avatar EverlastingBugstopper commented on June 20, 2024 1

ooohhh - very interesting.

I've become so conditioned to respond to URL encoding issues with a recommendation to polyfill that I didn't actually read your report.

Your diagnosis seems correct and using decodeURI should fix 👍

Happy to accept a PR or we can add this to our list of things to address.

from kv-asset-handler.

EverlastingBugstopper avatar EverlastingBugstopper commented on June 20, 2024

Hey @computator - this is actually an issue with the Workers runtime itself (very longstanding). In our docs we recommend polyfilling the URL class with a better implementation if you need to. Let me know if you need any help figuring that out 😄

from kv-asset-handler.

computator avatar computator commented on June 20, 2024

The runtime URL class may be nonconformant, but the percent encoding aspect of it is: https://url.spec.whatwg.org/#example-5434421b. If you test it in chrome or something you can see it returns the pathname percent encoded as well:

> new URL('http://google.com/test%20path').pathname
'/test%20path'

As such, it is in fact the kv-asset-handler code that is not compensating for that encoding before loading files from the KV store. 😁

from kv-asset-handler.

pmkemper avatar pmkemper commented on June 20, 2024

Any update on this?

When using filenames in non-latin scripts, like Cyrillic or Arabic, kv-asset-handler will also look for the encoded name instead of the decoded name.

Using decodeURI fixes this. But it is futile to use decodeURI in mapRequestToAsset, because Request() encodes the URL right back. So decodeURI needs to be run in kv-asset-handler itself.

Since some people may use encoded filenames, I think there should be an option to decode the path name.

from kv-asset-handler.

ericselin avatar ericselin commented on June 20, 2024

I think this is a little insane. If you have a CMS (which most sites probably do), and you allow editors to upload images, for example (which also, you probably do), you're bound to have some image filenames with a space in them. And spaces in a filename does not work!

This broke our production site yesterday. I would consider this package core to the Worker sites offering, so [Cloudflare] please don't hide behind the "yeah, just fix it yourself and open a PR if you care about this" argument. Personally I think that wrangler should encode the filenames, but I don't know your [Cloudflare] development plans.

from kv-asset-handler.

SukkaW avatar SukkaW commented on June 20, 2024

I think the issue could be closed now. My PR #100 & #105 have fixed the issue.

cc @cloudflare

from kv-asset-handler.

ispivey avatar ispivey commented on June 20, 2024

This will be fixed shortly in 0.0.11.

from kv-asset-handler.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.