Describe Your Question
- I want to call a specific study directly via link. For example “http://localhost:3000/viewer?StudyInstanceUIDs=1.113654.3.13.1026”
- But i get a 404
- When i go normally from localhost:3000 and naviage to the study its there.
- It tries to find the /viewer path which isnt there. I printed what is in my dist directory below
- I use OHIF Version 3 stable
Additional Info
I also tried to just run it with a standard javascript http server. Also did not work
What steps can we follow to reproduce the bug?
- yarn run build
- Copy the dist folder to a the directory with the go file
- go build -buildmode=exe
- Start OHIF (with a dicomweb server running at whatever you give as output url)
- Call a study directly via link from the browser
Here is the full code of my http server (and reverse proxy) in golang. Maybe i just do something wrong…
package main
import (
"bytes"
"embed"
_ "embed"
"fmt"
"log"
"net/http"
"net/http/httputil"
"net/url"
"os"
"time"
)
var (
//go:embed dist/*
userInterface embed.FS
)
type ClosingBuffer struct{ *bytes.Buffer }
func (cb *ClosingBuffer) Close() error { return nil }
func main() {
// Parse command-line arguments for the input and output URLs
if len(os.Args) != 3 {
log.Fatalf("Usage: %s <input URL> <output URL>", os.Args[0])
}
inputURLStr := os.Args[1]
outputURLStr := os.Args[2]
// Parse the input and output URLs
inputURL, err := url.Parse(inputURLStr)
if err != nil {
log.Fatal(err)
}
outputURL, err := url.Parse(outputURLStr)
if err != nil {
log.Fatal(err)
}
// Create the reverse proxy
proxy := httputil.NewSingleHostReverseProxy(outputURL)
// Reverse proxy handler
proxyHandler := http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
// Set CORS headers to allow any origin
w.Header().Set("Access-Control-Allow-Origin", "*")
w.Header().Set("Access-Control-Allow-Methods", "GET, POST, OPTIONS, PUT, DELETE")
w.Header().Set("Access-Control-Allow-Headers", "Origin, Content-Type, Authorization")
// Serve the request through the reverse proxy
proxy.ServeHTTP(w, r)
})
// UI handler
uiHandler := http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
// Set CORS headers to allow any origin
w.Header().Set("Access-Control-Allow-Origin", "*")
w.Header().Set("Access-Control-Allow-Methods", "GET, POST, OPTIONS, PUT, DELETE")
w.Header().Set("Access-Control-Allow-Headers", "Origin, Content-Type, Authorization")
w.Header().Set("Cross-Origin-Embedder-Policy", "require-corp")
w.Header().Set("Cross-Origin-Opener-Policy", "same-origin")
// Serve the UI using embedded files
if r.URL.Path == "/" {
r.URL.Path = "/index.html"
}
fmt.Println(r.URL.Path)
content, err := userInterface.ReadFile("dist" + r.URL.Path)
if err != nil {
http.NotFound(w, r)
return
}
http.ServeContent(w, r, r.URL.Path, time.Now(), bytes.NewReader(content))
})
// Create a new HTTP server for port 8080
serverProxy := http.Server{
Addr: ":" + inputURL.Port(), // incoming port from input URL
Handler: proxyHandler,
}
// Create a new HTTP server for port 3000
serverUI := http.Server{
Addr: ":3000",
Handler: uiHandler,
}
// Start both HTTP servers
fmt.Println(fmt.Sprintf("Starting HTTP server on port %s...", inputURL.Port()))
go func() {
if err := serverProxy.ListenAndServe(); err != nil {
fmt.Println(err)
}
}()
fmt.Println("Starting HTTP server on port 3000...")
if err := serverUI.ListenAndServe(); err != nil {
fmt.Println(err)
}
}
Mode LastWriteTime Length Name
---- ------------- ------ ----
d----- 21.03.2023 14:47 assets
-a---- 21.03.2023 14:46 145700 5004fdc02f329ce53b69.wasm
-a---- 21.03.2023 14:46 21482 610.min.worker.js
-a---- 21.03.2023 14:46 86994 610.min.worker.js.map
-a---- 21.03.2023 14:46 249148 65916ef3def695744bda.wasm
-a---- 21.03.2023 14:46 204778 75788f12450d4c5ed494.wasm
-a---- 21.03.2023 14:46 10478 888.min.worker.js
-a---- 21.03.2023 14:46 56240 888.min.worker.js.map
-a---- 21.03.2023 14:46 5683 app-config.js
-a---- 21.03.2023 14:46 16384917 app.js
-a---- 21.03.2023 14:46 15651313 app.js.map
-a---- 21.03.2023 14:46 178739 c22b37c3488e1d6c3aa4.wasm
-a---- 21.03.2023 14:46 122749 cornerstoneWADOImageLoader.min.js
-a---- 21.03.2023 14:46 620151 cornerstoneWADOImageLoader.min.js.map
-a---- 21.03.2023 14:46 57639 es6-shim.min.js
-a---- 21.03.2023 14:46 34172 extensions_cornerstone-dicom-seg_src_viewports_OHIFCornerstoneSEGView
port_tsx.js
-a---- 21.03.2023 14:46 24582 extensions_cornerstone-dicom-seg_src_viewports_OHIFCornerstoneSEGView
port_tsx.js.map
-a---- 21.03.2023 14:46 24945 extensions_cornerstone-dicom-sr_src_viewports_OHIFCornerstoneSRViewpo
rt_tsx.js
-a---- 21.03.2023 14:46 20872 extensions_cornerstone-dicom-sr_src_viewports_OHIFCornerstoneSRViewpo
rt_tsx.js.map
-a---- 21.03.2023 14:46 102245 extensions_cornerstone_src_Viewport_OHIFCornerstoneViewport_tsx.js
-a---- 21.03.2023 14:46 77231 extensions_cornerstone_src_Viewport_OHIFCornerstoneViewport_tsx.js.ma
p
-a---- 21.03.2023 14:46 3785 extensions_dicom-pdf_src_viewports_OHIFCornerstonePdfViewport_tsx.js
-a---- 21.03.2023 14:46 1608 extensions_dicom-pdf_src_viewports_OHIFCornerstonePdfViewport_tsx.js.
map
-a---- 21.03.2023 14:46 4242 extensions_dicom-video_src_viewports_OHIFCornerstoneVideoViewport_tsx
.js
-a---- 21.03.2023 14:46 2044 extensions_dicom-video_src_viewports_OHIFCornerstoneVideoViewport_tsx
.js.map
-a---- 21.03.2023 14:46 14110 extensions_measurement-tracking_src_viewports_TrackedCornerstoneViewp
ort_tsx.js
-a---- 21.03.2023 14:46 10664 extensions_measurement-tracking_src_viewports_TrackedCornerstoneViewp
ort_tsx.js.map
-a---- 21.03.2023 14:46 27008 extensions_test-extension_src_index_tsx.js
-a---- 21.03.2023 14:46 15680 extensions_test-extension_src_index_tsx.js.map
-a---- 21.03.2023 14:46 2654 google.js
-a---- 21.03.2023 14:46 6733 index.html
-a---- 21.03.2023 14:46 197208 index.worker.min.worker.js
-a---- 21.03.2023 14:46 729324 index.worker.min.worker.js.map
-a---- 21.03.2023 14:46 2005 init-service-worker.js
-a---- 21.03.2023 14:46 1369 manifest.json
-a---- 21.03.2023 14:46 35632 modes_basic-test-mode_src_index_js.js
-a---- 21.03.2023 14:46 36145 modes_basic-test-mode_src_index_js.js.map
-a---- 21.03.2023 14:46 16558 ohif-logo-light.svg
-a---- 21.03.2023 14:46 16567 ohif-logo.svg
-a---- 21.03.2023 14:46 246169 oidc-client.min.js
-a---- 21.03.2023 14:46 3138 polyfill.min.js
-a---- 21.03.2023 14:46 595 silent-refresh.html
-a---- 21.03.2023 14:46 10940 sw.js
-a---- 21.03.2023 14:46 2733 sw.js.map
-a---- 21.03.2023 14:46 33686 vendors-node_modules_react-resize-detector_build_index_esm_js.js
-a---- 21.03.2023 14:46 37850 vendors-node_modules_react-resize-detector_build_index_esm_js.js.map
-a---- 21.03.2023 14:46 264 _headers
-a---- 21.03.2023 14:46 155 _redirects