|
|
CORS 與 HTTP 直接相關,因為它使用 HTTP 標題來確定跨原始請求是否安全且得到允許。如需詳細資訊,請參閱 HTTP 開發人員指南。
|
<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>
|
|
請注意下列事項:
• 將 cors.allowed.origins 參數更新為所需的網址。
• 可使用逗號分隔符號指定多個允許的來源。例如,https://origin1.com, https://origin2.com。
• * 可專門用於允許來自所有來源的請求。* 只能單獨使用,以允許所有來源。* 不能作為 URI 的一部份使用。
• 對於使用 PingFederate 進行單一登入 (SSO) 的環境,請確保將 PingFederate Runtime Server FQDN 新增為允許的來源。
◦ http://<Ping Federate FQDN>:9301 http://<Ping Federate FQDN>:9031
• 視需要為 cors.allowed.headers 參數新增或移除任何自訂標題。
• 將 cors.support.credentials 設為 true 可允許進行基本驗證。
|
<!-- <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> 必須以 ThingWorx Platform 中的使用中未到期應用程式金鑰取代 。
|
<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> 必須是以冒號分隔使用者名稱與密碼的 Base64 編碼。例如,密碼為 ptc123 的使用者名稱 Administrator 會以 Administrator:ptc123 輸入到 Base64 編碼器中,產生的值為 QWRtaW5pc3RyYXRvcjpwdGMxMjM=。此方法僅用於測試的目的,因為可以解碼 Base64 來以純文字格式取得使用者名稱和密碼值。
|