簡體   English   中英

ColdFusion REST API 啟用 CORS

[英]ColdFusion REST API Enable CORS

我正在嘗試使用 Coldfusion 組件構建 REST API,但我不知道如何啟用 CORS。 我正在使用 IIS 10 和 ColdFusion 2016。我在 IIS 中找不到任何地方可以按照谷歌上的說明配置 CORS,而且我在 CF 管理設置下看不到任何地方來啟用 CORS,所以我想我會嘗試在我的API 而不是擺弄每個環境中的配置,我將它部署到(qa、uat、prod)。

這是我的 application.cfc 目前的樣子,您可以在 onRequestStart 中看到我正在嘗試設置標頭(我嘗試過兩種方法)

<cfscript>
    component output="false" {
        this.name = ....


        public boolean function onApplicationStart() {\
            restInitApplication( ... );
            return true;
        }

        public void function onApplicationEnd(ApplicationScope) {
            return;
        }

        public void function onMissingTemplate(targetPage) {
            return;
        }

        public void function onRequestStart(targetPage) {
            cfheader(name="Access-Control-Allow-Origin", value="*");
            // i've also tried ...
            GetPageContext().getResponse().addHeader("Access-Control-Allow-Origin","*");
        }

        public void function onSessionStart() {
            return;
        }

        public void function onSessionEnd(sessionScope, applicationScope) {
            return;
        }
    }
</cfscript>

我建議安裝 IIS CORS 模塊 - 參考 這是該參考文獻中的一個片段:

功能概述
Microsoft IIS CORS 模塊是使網站能夠支持 CORS(跨域資源共享)協議的擴展。

IIS CORS 模塊為 Web 服務器管理員和網站作者提供了一種使他們的應用程序支持 CORS 協議的方法。 使用此模塊,開發人員可以將 CORS 邏輯移出他們的應用程序並依賴於 Web 服務器。 模塊對 CORS 請求的處理由配置中定義的規則決定。 這些 CORS 規則可以輕松定義或配置,從而可以輕松將所有 CORS 協議處理委托給模塊。

IIS CORS 模塊是服務器端的 CORS 組件
CORS 協議管理客戶端/服務器通信。 通常,Web 瀏覽器充當客戶端 CORS 組件,而 IIS 服務器在 IIS CORS 模塊的幫助下充當服務器端 CORS 組件。

當協議感知客戶端(例如 Web 瀏覽器)向與當前域不同的域(源)發出請求時,就會發生 CORS 請求。 這種情況稱為跨域請求。 當不使用 CORS 時,跨域請求將被客戶端阻止。 使用CORS模塊時,IIS會根據IIS配置通知客戶端是否可以進行跨域請求。

不要嘗試從 ColdFusion 實現這一點,讓 Web 服務器做它設計要做的事情。 安裝模塊后,您可以在web.config文件中為任何/所有 IIS 站點創建所需的規則。

示例配置文件:

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<system.webServer>
    <cors enabled="true" failUnlistedOrigins="true">
        <add origin="*" />
        <add origin="https://*.microsoft.com"
             allowCredentials="true"
             maxAge="120"> 
            <allowHeaders allowAllRequestedHeaders="true">
                <add header="header1" />
                <add header="header2" />
            </allowHeaders>
            <allowMethods>
                 <add method="DELETE" />
            </allowMethods>
            <exposeHeaders>
                <add header="header1" />
                <add header="header2" />
            </exposeHeaders>
        </add>
        <add origin="http://*" allowed="false" />
    </cors>
</system.webServer>
</configuration>

您可以從這里下載 IIS CORS 模塊。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM