Jor*_*dan 4 rest coldfusion cors
我正在尝试使用 Coldfusion 组件构建 REST API,但我不知道如何启用 CORS。我正在使用 IIS 10 和 ColdFusion 2016。按照 google 上的说明,我无法在 IIS 中找到任何位置来配置 CORS,并且在 CF 管理设置下没有看到任何地方可以启用 CORS,所以我想我会尝试在我的应用程序中启用 CORS。我将其部署到(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>
Run Code Online (Sandbox Code Playgroud)
我建议安装 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>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1492 次 |
| 最近记录: |