Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to enable cors nodejs with express?

In summary I am using a viewer like api of dicom files called cornerstone, for this I connect to the WADO service of dc4chee to get the dicom, dcm4chee runs port 8080, and my application on node uses port 3000, so I am trying to show The browser's dicom.

https://www.npmjs.com/package/cornerstone-wado-image-loader

This is the error displayed by the browser

XMLHttpRequest can not load http: // localhost: 8080 / wado? RequestType = WADO & studyUID = 1.2.840.113704.1.111.5 ... 26513.429 & contentType = application% 2Fdicom & transferSyntax = 1.2.840.10008.1.2. In 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http: // localhost: 3000' is therefore not allowed access. 

In the documentation specified

Note that the web server must support Cross source resource sharing or the image will fail to load. If you are unable to get CORS enabled on the web server you are loading DICOM P10 instances from, you can use a reverse proxy. Here's a simple Node.js based on http-proxy that adds CORS headers that you might find useful.

And show this example code but I'm using express and this code does not work

Var http = require ('http'),     HttpProxy = require ('http-proxy');  Var proxy = httpProxy.createProxyServer ({target: 'http: // localhost: 8042'}) .listen (8000);  Proxy.on ('proxyRes', function (proxyReq, req, res, options) {   // add the CORS header to the response   Res.setHeader ('Access-Control-Allow-Origin', '*'); });  Proxy.on ('error', function (e) {   // suppress errors }); 

Also use npm cors here the code

Var express = require ('express') Var cors = require ('cors') Var app = express ()   App.get ('/ products /: id', cors (), function (req, res, next) {   Res.json ({msg: 'This is CORS-enabled for a Single Route')) })   App.listen (80, function () {   Console.log ('CORS-enabled web server listening on port 80') }) 

But with this I enable the cors on port 3000 and not the 8080, I need the mode to activate or add 'Access-Control-Allow-Origin in headers response and not in header request,

How can I do to add CORS on port 8080 where dcm4chee runs from NODEjs?

update!

The server responds with the following;

RESPONDE HEADER

Content-Type:application/dicom Date:Sat, 01 Apr 2017 01:15:38 GMT Expires:0 Server:Apache-Coyote/1.1 Transfer-Encoding:chunked X-Powered-By:Servlet 2.4; JBoss-4.2.3.GA (build: SVNTag=JBoss_4_2_3_GA  date=200807181439)/JBossWeb-2.0 

REQUEST HEADER

Accept:*/* Accept-Encoding:gzip, deflate, sdch, br Accept-Language:es-ES,es;q=0.8,en-US;q=0.6,en;q=0.4 Connection:keep-alive Host:localhost:8080 Origin:http: //localhost:3000 Referer:http: //localhost:3000/ User-Agent:Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like  Gecko) Chrome/55.0.2883.87 Safari/537.36 

HOW TO ENABLE THE CORS IN RESPONSE HEADER??

like image 702
M. Node Avatar asked Mar 31 '17 21:03

M. Node


People also ask

Why we use CORS in Express?

CORS stands for Cross-Origin Resource Sharing . It allows us to relax the security applied to an API. This is done by bypassing the Access-Control-Allow-Origin headers, which specify which origins can access the API.


1 Answers

do

npm install cors --save 

and just add these lines in your main file where your request is going.

const cors = require('cors'); const express = require('express'); const app = express(); app.use(cors()); 
like image 183
Yatender Singh Avatar answered Sep 22 '22 18:09

Yatender Singh