DroidArrrh DroidArrrh - 1 year ago 131
AngularJS Question

CORS error while making post request to logstash

I have configured Logstash 1.5.2 to consume http input on a linux machine.

This is my logstash input configuration:

input {
http {
host => "10.x.x.120"
port => "8500"

I can send data to logstash by using curl -XPOST from the linux machine.

But when I make a $http.post(url, postData); request from my angularJS application I get the following error:

Cross-Origin Request Blocked: The Same Origin Policy disallows reading
the remote resource

I have hosted my application on the same linux machine using nginx within a docker container.
I have tried to configure nginx to allow CORS by adding the following lines to the nginx.conf:

add_header 'Access-Control-Allow-Origin' '*';
add_header 'Access-Control-Allow-Credentials' 'true';
add_header 'Access-Control-Allow-Methods' 'GET, POST, OPTIONS';
add_header 'Access-Control-Allow-Headers' 'DNT,X-CustomHeader,Keep-Alive,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type';

But still the error persists.

Also when I hit http://10.x.x.120:8500 from my browser address bar I get 'ok'.

enter image description here
enter image description here
Any help is highly appreciated.

Answer Source

I was able to get this running by using reverse-proxy setting for nginx.

I modified my URL to be as follows: http://10.x.x.120/logs

And then made the following changes to the nginx.conf file:

location^~ /logs {
    proxy_pass http://10.x.x.120:8500; 

Now when ever my application makes an HTTP POST request to http://10.x.x.120:8500/logs it is redirected to http://10.x.x.120:8500.

Voila!! Logstash gets the data because it is listening to port 8500.

Recommended from our users: Dynamic Network Monitoring from WhatsUp Gold from IPSwitch. Free Download