ajaxerlangcorsyawserlangweb

How to add Access-Control-Allow-Origin headers to yaws file?


I send a post request to YAWS server using AJAX from a different port/domain but javascript returns this error message:

XMLHttpRequest cannot load http://0.0.0.0:8000/index.yaws. Origin http://localhost is not allowed by Access-Control-Allow-Origin.

Now I understand that I need to include CORS headers in index.yaws file but I don't know how to do it in Erlang.


Solution

  • If you want to set only localhost as an allowed origin you could try the code below. Note that it represents the JSON results you currently return with the variable YourJsonString.

    out(Arg) ->
        Hdrs = yaws_api:arg_headers(Arg),
        case yaws_api:get_header(Hdrs, "Origin") of
            "localhost" ->
                [{header, {"Access-Control-Allow-Origin", "localhost"}},
                 {html, YourJsonString}];
            _ ->
                {html, YourJsonString}
        end.