fireproofsocks
Serving only specific static assets
I’m wading through my app’s endpoint.ex – I want to only expose several hand-selected static assets in my Phoenix app, but I can’t seem to find the magic way to do it.
This doesn’t seem to work:
plug Plug.Static,
at: "/",
from: {:myapp, "priv/static"},
only: ["xyz/some_file.json"]
http://localhost:4000/xyz/some_file.json - 404
Nor does this:
plug Plug.Static,
at: "/",
from: {:myapp, "priv/static/xyz"},
only: ["some_file.json"]
http://localhost:4000/xyz/some_file.json - 404
If I open up the restrictions a bit, it does, e.g.
plug Plug.Static,
at: "/",
from: {:myapp, "priv/static"},
only: ~w(xyz)
http://localhost:4000/xyz/some_file.json - OK!
Most Liked
konstantine
My understanding is that there are 2 options:
:only, it will match exact file and folder names at the :at location (“/” in your case)
:only_matching, which works similarly, but allows for random filename ‘tails’ (this is useful when serving digested files)
With reference to your 3 examples, the first :only specifies a path rather than a name, the second a name that is not at the :at location, the third one works because xyz is right at the :at location (and the filename does not matter after that).
Assuming that my understanding is correct, you have two possibilities. Either you place your hand-selected assets in specific folders, whose names you specify, together with any files located at the root, in a single :only or :only_matching word list. Or, if you want to hand-select from various folders, you will need multiple plugs and multiple :at locations, each with its very own word list.
Last Post!
fireproofsocks
That sounds correct. I think my struggle stems from my attempts to include different files in different directories… the examples don’t have that… and I’m not even sure how to include static assets from 2 different directories…
Popular in Questions
Other popular topics
Categories:
Sub Categories:
Forums
Popular Tags
- #ecto
- #liveview
- #troubleshooting
- #learning-elixir
- #deployment
- #library
- #erlang
- #testing
- #genserver
- #mix
- #absinthe
- #remote-other
- #otp
- #plug
- #how-to-question
- #macros
- #postgres
- #channels
- #elixirconf
- #exunit
- #discussion
- #code-sync
- #javascript
- #podcasts
- #onsite
- #dialyzer
- #docker
- #authentication
- #umbrella
- #full-time-contract
- #podcasts-by-brainlid
- #ecto-query
- #elixir-ls
- #phoenix_html
- #iex
- #blog-post
- #graphql
- #genstage
- #ai
- #websockets
- #supervisor
- #elixirconf-us
- #advent-of-code
- #distillery
- #processes
- #api
- #forms
- #metaprogramming
- #security
- #hex









