Cross-domain Konfiguration mit CORS für caldavzap

  • Ab sofort steht euch hier im Forum die neue Add-on Verwaltung zur Verfügung – eine zentrale Plattform für alles rund um Erweiterungen und Add-ons für den DSM.

    Damit haben wir einen Ort, an dem Lösungen von Nutzern mit der Community geteilt werden können. Über die Team Funktion können Projekte auch gemeinsam gepflegt werden.

    Was die Add-on Verwaltung kann und wie es funktioniert findet Ihr hier

    Hier geht es zu den Add-ons

Status
Für weitere Antworten geschlossen.

PRozAC

Benutzer
Registriert
05. Mai 2015
Beiträge
1
Reaktionspunkte
0
Punkte
0
Moin,

ich betreibe mehrere Subdomains mit einem Domänen Wildcard Zertifikat z.B. solar.mydomain.xyz, caldav.mydomain.xyz und kalender.mydomain.xyz unter DSM 5.1.
Die direkten Zugriffe über die Virtual Host Konfiguration auf die Subdomains funktionieren.

Jetzt möchte ich caldavzap als Webkalender unter kalender.mydomain.xyz nutzen der wiederum auf caldav.mydomain.xyz zugreifen muss.
Leider sperrt sich da Java weil es ein cross-domain setup ist.

Damit der Server die richtigen CORS Header zurück gibt muss ich folgende Punkte dem Server beibringen:

Rich (BBCode):
Access-Control-Allow-Origin: *
Access-Control-Allow-Methods: GET, POST, OPTIONS, PROPFIND, PROPPATCH, REPORT, PUT, MOVE, DELETE, LOCK, UNLOCK
Access-Control-Allow-Headers: User-Agent, Authorization, Content-type, Depth, If-match, If-None-Match, Lock-Token, Timeout, Destination, Overwrite, X-client, X-Requested-With

Ich habe leider nicht wirklich Ahnung wo ich beim Apache diese Einträge vornehmen muss.
Vielleicht kann mir jemand etwas auf die Sprünge helfen :)

Vielen Dank im Voraus!

Gruß..
Stefan
 
Gruß, ich möchte InfCloud verwenden und habe das gleiche Problem. Konntest Du eine Lösung finden? Scheinbar kann man den Appache mittels der .htcaccess konfigurieren. Ben
 
Zuletzt bearbeitet:
Im infcloud-Ordner ist doch eine .htaccess drin? Ich gebe sie hier einfach mal wieder:

Rich (BBCode):
#########################################################################################################################
# Apache configuration (REQUIRED for correct HTML5 cache functionality in browsers):
# 1.) You NEED to enable the following Apache modules: mod_mime, mod_headers (optionally you can also enable mod_deflate)
# 2.) You NEED to add the following lines into your Apache vhost configuration (without the #         character):
#     <Directory /client/installation/directory/>
#        AllowOverride FileInfo Limit
#         <IfVersion >= 2.3>
#             Require all granted
#         </IfVersion>
#         <IfVersion < 2.3>
#             Order allow,deny
#             Allow from all
#         </IfVersion>
#     </Directory>
#########################################################################################################################

# Add "Content-Type: text/cache-manifest" header for .manifest files
<IfModule mod_mime.c>
    AddType text/cache-manifest .manifest
</IfModule>

# Add "Cache-Control: max-age=0, must-revalidate, no-cache, no-transform, private" header for all     files
#  for more information see: https://tools.ietf.org/html/rfc7234
<IfModule mod_headers.c>
    Header set Cache-Control "max-age=0, must-revalidate, no-cache, no-transform, private"
</IfModule>

<IfModule mod_deflate.c>
    SetOutputFilter DEFLATE
</IfModule>

# If you use mod_cache set the correct path for the cache.manifest here
#<IfModule mod_cache.c>
#    CacheDisable cache.manifest
#</IfModule>
 
War mir bisher nicht bewusst. Aber selbst wenn, man muss ja den webserver instruieren und nicht infcloud, oder hab ich das falsch verstanden? Ich lese da auch nichts von CORS headern, sondern nur vom cache.
 
Ich kann dir nur sagen, dass Infcloud genauso so, wie es da steht, mit der Apache-Standardkonfiguration des aktuellen DSM (ohne Virtual Hosts), hier mit Baikal funktioniert. calcard.php und das Konfigurationsgerüst habe ich von delta23 aus dem Thread, aus dem du ausgeforkt hast.

# httpd -v
Server version: Apache/2.2.31 (Unix)
Server built: Oct 16 2015 05:59:15

// config.js fuer infcloud
var globalNetworkCheckSettings={href: 'https://some.address.ip/baikal/calcard.php/principals/', hrefLabel: null, additionalResources: [], forceReadOnly: null, settingsAccount: true, timeOut: 90000, lockTimeOut: 10000, delegation: true, backgroundCalendars: [], ignoreAlarms: false}
var globalUseJqueryAuth=true;
var globalInterfaceLanguage='de_DE';
var globalDefaultAddressCountry='de';

plus die gepostete .htaccess

PS: Kannst ja einfach mal zusätzlich

Header add Access-Control-Allow-Origin "*"

in die .htaccess schreiben...
 
Zuletzt bearbeitet:
Danke Dir für Deine Mühe! Ich hatte die .htaccess tatsächlich nicht hochgeladen, weil ich verstecke Dateien ausgeblendet hatte.

Obwohl ich kein crossDomain-Setup habe (sagt die Konsole) und den cache auch immer update (mit Veränderung und Upload der cache.manifest) und auch diverse Varianten versucht habe die Eigenschaft in der .htaccess unterzubringen, funktioniert es nicht.

Bei stackoverflow gibts einen hoch bewerteten post, in dem "Header set Access-Control-Allow-Origin "*"" in den Abschnitt IfModule mod_headers.c muss. Das habe ich ausprobiert, mit Asterix in Hochkommas, mit Asterix ohne Hochkommas und mit der konkreten IP am Tunnelende (10.0.0.0). Auch die extra Zeile Header set Access-Control-Allow-Credentials true habe ich versucht. Aber weiterhin gibt die Konsole aus, dass der Fehler bestände, dass der Header nicht die gewünschten Angaben enthält.

EDIT: Ich denke, der Server, der die CORS-Header zurückgeben muss ist der CardDAV-Server (bzw. CalDAV). Die .htaccess an der ich herumwerkle ist aber Teil des InfCloud-Clients. Die Frage ist also, wo man im Synology-eigenen CardDAV-Server einstellt, dass die angegebenen Header generiert werden. Bei Dir läuft es wahrscheinlich deshalb unproblematisch, weil Baikal eventuell als Server bereits diese Header nutzt und Du das daher nicht erst angeben musstest.
 
Zuletzt bearbeitet:
Status
Für weitere Antworten geschlossen.
 

Kaffeautomat

Wenn du das Forum hilfreich findest oder uns unterstützen möchtest, dann gib uns doch einfach einen Kaffee aus.

Als Dankeschön schalten wir deinen Account werbefrei.

:coffee:

Hier gehts zum Kaffeeautomat