日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

SAP Spartacus CORS 设置

發(fā)布時(shí)間:2023/12/19 编程问答 24 豆豆
生活随笔 收集整理的這篇文章主要介紹了 SAP Spartacus CORS 设置 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

Cross-Origin Resource Sharing (CORS)

CORS 是 Web 上的一種標(biāo)準(zhǔn)機(jī)制,它使來(lái)自 Web 應(yīng)用程序的跨域請(qǐng)求能夠到達(dá)不同域上的服務(wù)器。 只要響應(yīng)中沒有所需的 HTTP 標(biāo)頭,瀏覽器就會(huì)阻止跨源請(qǐng)求。

響應(yīng)標(biāo)頭由服務(wù)器指定,這就是為什么必須設(shè)置服務(wù)器以生成正確的標(biāo)頭的原因。 在 SAP Commerce Cloud 后端,可以使用 CorsFilter 以通用方式配置這些標(biāo)頭。 可以使用項(xiàng)目屬性為每個(gè)節(jié)點(diǎn)配置此屬性,或者可以使用 ImpEx 安裝腳本安裝到每個(gè)節(jié)點(diǎn)。

SAP Commerce 支持跨域資源共享機(jī)制。 CORS 機(jī)制為瀏覽器和服務(wù)器定義了一種方式,可以決定允許或不允許對(duì)受限資源的跨域請(qǐng)求。

想象一下 http://www.example.com/somepage.html 上的腳本想要從 https://www.example.com:87/resources 訪問資源。 您的瀏覽器將這兩個(gè)地址視為兩個(gè)不同的來(lái)源,它將阻止 /somepage.html 腳本從 /resources 獲取資源。 通過以接受 /somepage.html 請(qǐng)求的方式準(zhǔn)備 CORS 配置,可以安全地放寬此限制。

Enabling CORS Support in SAP Commerce Extensions

要在 SAP Commerce 擴(kuò)展中啟用 CORS 支持,請(qǐng)將這些部分包含在所選擴(kuò)展的 [extname]-web-spring.xml 文件中。

extname-web-spring.xml:

<bean id="extnamePlatformFilterChain" class="de.hybris.platform.servicelayer.web.PlatformFilterChain"><constructor-arg><list><ref bean="corsFilter"/>[...]</list></constructor-arg> </bean>

Configuring CORS in SAP Commerce Web Applications

Global Cluster Configuration

CORS 配置存儲(chǔ)在 CorsConfigurationProperty 項(xiàng)內(nèi)的數(shù)據(jù)庫(kù)中。 它是全局的,適用于連接到集群的所有節(jié)點(diǎn)。

要編輯您的配置,請(qǐng)?jiān)诤笈_(tái)轉(zhuǎn)到系統(tǒng) CORS 過濾器 CorsConfigurationProperty 并創(chuàng)建或修改 CorsConfigurationProperty 類型的實(shí)例。

CORS Headers

allowedOrigins

在開發(fā)中,允許的來(lái)源通常用星號(hào) (*) 配置,這會(huì)將所有客戶端列入許可名單,無(wú)論其域如何。 在生產(chǎn)環(huán)境中,這應(yīng)該包含允許與后端 API 交互的不同域。

allowedMethods

允許的標(biāo)頭必須包括所有允許使用的 HTTP 方法。 對(duì)于斯巴達(dá)克斯,需要配置以下方法:

GET HEAD OPTIONS PATCH PUT POST DELETE

allowedHeaders

allowed headers 設(shè)置指示允許跨域請(qǐng)求的 HTTP 標(biāo)頭。如果這些標(biāo)頭不允許跨域,Spartacus 將不會(huì)收到特定請(qǐng)求的響應(yīng)。大多數(shù)標(biāo)頭是標(biāo)準(zhǔn)標(biāo)頭,但您可能需要一些特定于功能的標(biāo)頭。以下列表提供了可以使用的所有標(biāo)頭的概述。

allowCredentials

請(qǐng)求憑證(Request credentials)與 cookie、授權(quán)標(biāo)頭或 TLS 客戶端證書有關(guān)。默認(rèn)情況下,這些在跨域請(qǐng)求中是不允許的,這就是為什么在未應(yīng)用配置時(shí)請(qǐng)求會(huì)被阻止的原因。

在 Spartacus 庫(kù)的 1.x 版中,Spartacus 沒有發(fā)送 cookie,但從 2.0 版開始,將為每個(gè) OCC 請(qǐng)求發(fā)送 cookie。這也已修補(bǔ)到 Spartacus 庫(kù)的 1.4 和 1.5 版。

需要發(fā)送 cookie 才能獲得“會(huì)話親和力”,也稱為“粘性會(huì)話”。會(huì)話親和性意味著 API 端點(diǎn)后面的同一服務(wù)器用于同一會(huì)話的所有后續(xù)請(qǐng)求。盡管 Commerce API 是無(wú)狀態(tài)的,但有時(shí)多個(gè)并行或順序調(diào)用可能會(huì)失敗。例如,“添加到購(gòu)物車”請(qǐng)求后跟“加載購(gòu)物車”請(qǐng)求可能會(huì)失敗,因?yàn)榈谝粋€(gè)請(qǐng)求可能會(huì)在服務(wù)器 1 上結(jié)束,而緊隨其后的第二個(gè)請(qǐng)求可能會(huì)在服務(wù)器 2 上結(jié)束。服務(wù)器可能不夠快,無(wú)法發(fā)送緩存失效,這就是為什么第二個(gè)響應(yīng)可能無(wú)法捕獲添加的項(xiàng)目。

會(huì)話親緣關(guān)系的另一個(gè)優(yōu)點(diǎn)是,如果對(duì)同一會(huì)話的請(qǐng)求由同一服務(wù)器提供服務(wù),則后端將獲得性能改進(jìn)。

為此,CCv2 公開了一個(gè)響應(yīng) cookie (ROUTE),指示用于處理 API 請(qǐng)求的處理服務(wù)器。每當(dāng)客戶端將此 cookie 添加到下一個(gè)請(qǐng)求中時(shí),該請(qǐng)求由同一服務(wù)器處理。

Setting Up CORS

后端需要的各種CORS配置可以通過以下方式安裝:

  • 使用配置屬性(configuration properties)在部署期間安裝它們
  • 在部署期間使用 Commerce Cloud 清單文件(manifest.json)安裝它們
  • 使用 ImpEx 腳本在運(yùn)行時(shí)安裝它們
  • 使用 Backoffice 在運(yùn)行時(shí)手動(dòng)配置它們

OCC 由名為 commercewebservices 的模板擴(kuò)展(template extension)安裝。 但是,您可以重命名擴(kuò)展 Web 應(yīng)用程序路徑,或從中生成自定義擴(kuò)展。 在下一節(jié)的示例中,我們假設(shè)名稱為 commercewebservices,但如果您有自定義名稱,則應(yīng)替換它。

大多數(shù)配置僅適用于 OCC,但如果您使用其他 API(例如輔助服務(wù)模塊),您還需要為這些 API 配置 CORS。

Project Properties File

如果按屬性安裝CORS過濾器配置,則必須添加以下屬性:

corsfilter.commercewebservices.allowedOrigins=* corsfilter.commercewebservices.allowedMethods=GET HEAD OPTIONS PATCH PUT POST DELETE corsfilter.commercewebservices.allowedHeaders=origin content-type accept authorization cache-control x-anonymous-consents x-profile-tag-debug x-consent-reference occ-personalization-id occ-personalization-time corsfilter.commercewebservices.exposedHeaders=x-anonymous-consents occ-personalization-id occ-personalization-time corsfilter.commercewebservices.allowCredentials=true

Commerce Cloud Manifest Configuration

如果您使用 Commerce Cloud 清單文件安裝 CORS 過濾器配置,請(qǐng)將以下標(biāo)頭添加到清單文件:

{"key": "corsfilter.commercewebservices.allowedOrigins","value": "*" }, {"key": "corsfilter.commercewebservices.allowedMethods","value": "GET HEAD OPTIONS PATCH PUT POST DELETE" }, {"key": "corsfilter.commercewebservices.allowedHeaders","value": "origin content-type accept authorization cache-control x-anonymous-consents x-profile-tag-debug x-consent-reference occ-personalization-id occ-personalization-time" }, {"key": "corsfilter.commercewebservices.exposedHeaders","value": "x-anonymous-consents occ-personalization-id occ-personalization-time" } {"key": "corsfilter.commercewebservices.allowCredentials","value": "true" }

Impex

如果您想在初始化期間、更新期間或使用 Hybris 管理控制臺(tái)手動(dòng)安裝 CORS 過濾器配置,您可以使用以下 ImpEx 腳本。

INSERT_UPDATE CorsConfigurationProperty;key[unique=true];value;context[default=commercewebservices,unique=true] ;allowedOrigins;* ;allowedMethods;GET HEAD OPTIONS PATCH PUT POST DELETE ;allowedHeaders;origin content-type accept authorization cache-control x-anonymous-consents x-profile-tag-debug x-consent-reference occ-personalization-id occ-personalization-time ;allowCredentials;true ;exposedHeaders;x-anonymous-consents occ-personalization-id occ-personalization-time

更多Jerry的原創(chuàng)文章,盡在:“汪子熙”:

總結(jié)

以上是生活随笔為你收集整理的SAP Spartacus CORS 设置的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。