|
|
CORS steht in direkter Beziehung zu HTTP, da es HTTP-Header verwendet, um zu bestimmen, ob eine Cross-Origin-Anforderung sicher und zulässig ist. Weitere Informationen finden Sie im HTTP Developer Guide (HTTP-Entwicklerhandbuch).
|
<filter>
<filter-name>CorsFilter</filter-name>
<filter-class>org.apache.catalina.filters.CorsFilter</filter-class>
<init-param>
<param-name>cors.allowed.origins</param-name>
<param-value>[ALLOWED_ORIGINS]</param-value>
</init-param>
<init-param>
<param-name>cors.allowed.methods</param-name>
<param-value>OPTIONS,GET,POST,HEAD,PUT,DELETE</param-value>
</init-param>
<init-param>
<param-name>cors.allowed.headers</param-name>
<param-value>Authorization,appKey,x-thingworx-session,Content-Type,X-Requested-With,Origin,Access-Control-Request-Method,Access-Control-Request-Headers,Accept</param-value>
</init-param>
<init-param>
<param-name>cors.exposed.headers</param-name>
<param-value>Access-Control-Allow-Origin,Access-Control-Allow-Credentials</param-value>
</init-param>
<init-param>
<param-name>cors.support.credentials</param-name>
<param-value>false</param-value>
</init-param>
<init-param>
<param-name>cors.preflight.maxage</param-name>
<param-value>10</param-value>
</init-param>
<init-param>
<param-name>cors.request.decorate</param-name>
<param-value>true</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>CorsFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
|
|
Beachten Sie Folgendes:
• Aktualisieren Sie den Parameter cors.allowed.origins mit der/den gewünschten Web-Adresse(n).
• Mehrere zulässige Ursprünge können mit einem Komma als Trennzeichen angegeben werden. Beispiel: https://origin1.com, https://origin2.com.
• * kann ausschließlich verwendet werden, um Anforderungen von allen Ursprüngen zuzulassen. * kann nur allein verwendet werden, um alle Ursprünge zuzulassen. * kann nicht als Teil eines URI verwendet werden.
• Stellen Sie für Umgebungen, die Single Sign-On (SSO) mit PingFederate verwenden, sicher, dass der PingFederate Runtime Server-FQDN als zulässiger Ursprung hinzugefügt wird.
◦ http://<Ping Federate FQDN>:9301 http://<Ping Federate FQDN>:9031
• Fügen Sie dem Parameter cors.allowed.headers bei Bedarf benutzerdefinierte Kopfzeilen hinzu, oder entfernen Sie sie.
• Legen Sie cors.support.credentials auf "true" fest, um die Standardauthentifizierung zu ermöglichen.
|
<!-- <security-constraint>
<web-resource-collection>
<web-resource-name>Forbidden</web-resource-name>
<url-pattern>/*</url-pattern>
<http-method>OPTIONS</http-method>
</web-resource-collection>
<auth-constraint/>
</security-constraint> -->
<script>
var xhr = new XMLHttpRequest();
xhr.open("GET", "https://[THINGWORX_HOST]:[PORT]/Thingworx/Things", true);
xhr.setRequestHeader("appKey", "<APPLICATION_KEY>");
xhr.setRequestHeader("accept", "application/json");
xhr.send();
</script>
|
|
<APPLCATION_KEY> muss durch einen aktiven, nicht abgelaufenen Anwendungsschlüssel von ThingWorx Platform ersetzt werden.
|
<script>
var xhr = new XMLHttpRequest();
xhr.open("GET", "https://[THINGWORX_HOST]:[PORT]/Thingworx/Things", true);
xhr.setRequestHeader("Authorization", "Basic <USER_PASSWORD>");
xhr.setRequestHeader("accept", "application/json");
xhr.send();
</script>
|
|
<USER_PASSWORD> muss in Base64 kodiert sein und einen Doppelpunkt als Trennzeichen zwischen Benutzername und Passwort aufweisen. Beispielsweise wird der Benutzername Administrator mit dem Passwort ptc123 in einen Base64-Encoder als Administrator:ptc123 eingegeben, was zu einem Wert von QWRtaW5pc3RyYXRvcjpwdGMxMjM= führt. Diese Methode wird nur zu Testzwecken verwendet, da Base64 dekodiert werden kann, um den Benutzernamen und den Passwortwert als einfachen Text zu erhalten.
|