Просмотр исходного кода

Fix cannot be displayed AWS icons when NO_CDN + drawio

* But CORS issue Remaining.
    * occur CORS block when fetch URL from draw.io
    * ex.) http://<draw.io URL>/shapes/mxAWS4.js
* workaround
    * Putting a container that gives Access-Control-Allow-Origin header in front of the draw.io container

Example docker-compose.yml for draw.io (refs: https://github.com/jgraph/docker-drawio/ )

```yml
version: '3.5'
services:
  proxy:
    # https://github.com/kaishuu0123/cors-reverse-proxy
    image: kaishuu0123/cors-reverse-proxy
    container_name: cors-reverse-proxy
    ports:
    - 8080:8081
    environment:
      # POINT: Port forward to draw.io
      CORS_REVERSE_PROXY_TARGET_URL: http://drawio:8080
      CORS_REVERSE_PROXY_HOST: 0.0.0.0
      CORS_REVERSE_PROXY_PORT: 8081
  drawio:
    image: jgraph/drawio
    container_name: drawio
    restart: unless-stopped
    ports:
    # POINT: do not export draw.io port
    # - 8080:8080
    - 8443:8443
    environment:
      PUBLIC_DNS: domain
      ORGANISATION_UNIT: unit
      ORGANISATION: org
      CITY: city
      STATE: state
      COUNTRY_CODE: country
    healthcheck:
      test: ["CMD-SHELL", "curl -f http://domain:8080 || exit 1"]
      interval: 1m30s
      timeout: 10s
      retries: 5
      start_period: 10s
```
Koki Oyatsu 5 лет назад
Родитель
Сommit
dca01243d5
2 измененных файлов с 14 добавлено и 0 удалено
  1. 4 0
      src/server/views/layout/layout.html
  2. 10 0
      src/server/views/widget/headers/drawio.html

+ 4 - 0
src/server/views/layout/layout.html

@@ -23,6 +23,10 @@
     {% include '../widget/headers/mathjax.html' %}
   {% endif %}
 
+  {% if local_config.env.DRAWIO_URI %}
+    {% include '../widget/headers/drawio.html' %}
+  {% endif %}
+
   {% include '../widget/headers/scripts-for-dev.html' %}
 
   <script src="{{ webpack_asset('js/boot.js') }}"></script>

+ 10 - 0
src/server/views/widget/headers/drawio.html

@@ -0,0 +1,10 @@
+<!-- draw.io -->
+<script type="text/javascript">
+  // refs: https://github.com/jgraph/drawio/blob/v13.4.3/etc/build/build.xml#L35-L38
+  let url = new URL("{{ local_config.env.DRAWIO_URI }}");
+  let origin = url.origin;
+  window.DRAWIO_BASE_URL = origin;
+  window.STENCIL_PATH = [origin, 'stencils'].join('/');
+  window.SHAPES_PATH = [origin, 'shapes'].join('/');
+  window.mxBasePath = [origin, 'mxgraph'].join('/');
+</script>