neobooru/SzuruChrome

Couldn't connect to http://raspiserver:800 - TypeError: e.response is undefined

Closed this issue · 4 comments

I was unable to add my szuru server as i receive CORS errors in Firefox.

Cross-Origin Request Blocked: The Same Origin Policy disallows reading the remote resource at http://raspiserver:800/api/info. (Reason: CORS header ‘Access-Control-Allow-Origin’ missing).

Cross-Origin Request Blocked: The Same Origin Policy disallows reading the remote resource at http://raspiserver:800/api/info. (Reason: CORS request did not succeed).

ok.. my bad. rtfm

So I have been on this for quite a while now, but I simply can't get it to work. Might be my missing knowledge about web servers in general and the missing information in the FAQ.
So I first tried using a nginx reverse-proxy, which partially worked, but the GET request still got blocked.
Then I researched a little and found out, that the configuration in the FAQ belongs to a .htaccess file? But where do I need to put that on my szurubooru installation. Or is that a browser thing I need to do?

The configuration in the FAQ is for an Apache2 server. I haven't yet added a section for nginx.

Are you manually configuring nginx, or are you using the official docker image? I didn't really test the docker image myself, so maybe there still is a bug with it.

Official docker nginx config
My customized config (not for docker)

The important part is the following snippet. Ideally you want this somewhere under location /api/ (or a slight differentiation of that), but you can put it under the server {...} too (I think).

# If pre-flight request
if ($request_method = "OPTIONS") {
    add_header "Access-Control-Allow-Origin" "*";
    add_header "Access-Control-Allow-Methods" "GET, POST, PUT, DELETE, OPTIONS";
    add_header "Access-Control-Allow-Headers" "Authorization, Content-Type";

    add_header "Access-Control-Max-Age" 1728000;
    return 204;
}

# For all other requests
add_header "Access-Control-Allow-Origin" "*";
add_header "Access-Control-Allow-Methods" "GET, POST, PUT, DELETE, OPTIONS";
add_header "Access-Control-Allow-Headers" "Authorization, Content-Type";

Please report back on what fixed your issue, or if this didn't fix it 👍

P.s. if you are still having problems then please include your nginx config file.

Alright, we did it.
After I looked 3 Times on the same error message I noticed, that it's not allowed to have multiple Access-Control-Allow-Origins. .-.
So I just commented the second Access-Control-Allow-Origin out and... it worked! Thank you a bunch!

Here are the config files I used. I can also send you the complete docker-compose file. Please note, that I am using a RPI.
nginx config
docker-compose