I'm trying to utilize IPFS to load static content, such as images and javascript libraries, on a dynamic site loaded on the http protocol.

For example https://www.example.com/ is a normal web 2.0 page, with an image reference here https://www.example.com/images/myimage.jpg

When the request is made on myimage.jpg, the following header is served

x-ipfs-path: /ipfs/QmXXXXXXXXXXXXXXXXX/images/myimage.jpg 

Which then gets translated by the IPFS Companion browser plugin as:

https://127.0.0.1:8081/ipfs/QmXXXXXXXXXXXXXXXXX/images/myimage.jpg

The problem being, is that it has directed to an SSL page on the local IP, which won't load due to a protocol error. (changing the above from https to http works)

Now, if I were to request https://www.example.com/images/myimage.jpg directly from the address bar, it loads the following:

http://localhost:8081/ipfs/QmYcJvDhjQJrMRFLsuWAJRDJigP38fiz2GiHoFrUQ53eNi/images/myimage.jpg

And then a 301 to:

http://(some other hash).ipfs.localhost:8081/images/myimage.jpg

Resulting in the image loading successfully.

I'm assuming because the initial page is served over SSL, it wants to serve the static content over SSL as well. I also assume that's why it then uses the local IP over https, rather than localhost in the other route.

My question is, how do I get this to work?

  • Is there a header which lets IPFS companion to force it to load over http? If so, I'm assuming this would cause browser security warnings due to mixed content. I have tried adding this header without luck: X-Forwarded-Proto: http
  • Do I need to do something to enable SSL over 127.0.0.1, connecting this up with my local node? If so, this doesn't seem to be the default setup for clients, and worry that all the content will show broken images if they do not follow some extra steps.
  • Is it even possible to serve static content over IPFS from non-IPFS pages?

Any hints appreciated!

Edit: This appears to effect the Chrome engine and and Firefox.

1

There are 1 answers

2
lidel On

Looks like a configuration error on your end.

Using IPFS Companion with default settings on a clean browser profile works as expected.

Opening: https://example.com/ipfs/bafybeigdyrzt5sfp7udm7hu76uh7y26nf3efuylqabf3oclgtqy55fbzdi redirects fine to http://localhost:8080/ipfs/bafybeigdyrzt5sfp7udm7hu76uh7y26nf3efuylqabf3oclgtqy55fbzdi which then redirects to unique Origin based on the root CID: http://bafybeigdyrzt5sfp7udm7hu76uh7y26nf3efuylqabf3oclgtqy55fbzdi.ipfs.localhost:8080/

You use custom port (8081), which means you changed the Gateway address in ipfs-companion Preferences at some point.

Potential fix: go there and make sure your "Local gateway" is set to http://localhost:8081 (instead of https://).

If you have http:// there, then see if you have some other extension or browser setting forcing https:// (check if this behavior occurs on a browser profile, and then add extensions/settings one by one, to identify the source of the problem).