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??
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.
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());
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With