【发布时间】:2014-06-20 12:29:56
【问题描述】:
当我有一个只接受 HTTPS 的 API 并且我发出一个 HTTP 请求时,默认值似乎是 404 错误。有没有办法自动重定向到 HTTPS URL?
【问题讨论】:
标签: apigee
当我有一个只接受 HTTPS 的 API 并且我发出一个 HTTP 请求时,默认值似乎是 404 错误。有没有办法自动重定向到 HTTPS URL?
【问题讨论】:
标签: apigee
一个简单的方法是使用有条件的 RaiseFault 策略。
这是一个简单的例子
RaiseFault 策略如下所示:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<RaiseFault async="false" continueOnError="false" enabled="true" name="301tossl">
<DisplayName>301toSSL</DisplayName>
<FaultRules/>
<Properties/>
<FaultResponse>
<Set>
<Headers>
<Header name="Location">https://{request.header.host}{request.uri}</Header>
</Headers>
<Payload contentType="text/plain">SSL Required.
</Payload>
<StatusCode>301</StatusCode>
<ReasonPhrase>Moved Permanently</ReasonPhrase>
</Set>
</FaultResponse>
<IgnoreUnresolvedVariables>true</IgnoreUnresolvedVariables>
</RaiseFault>
下面是一个在策略上设置条件的示例(在本例中为 preflow):
<PreFlow name="PreFlow">
<Request>
<Step>
<FaultRules/>
<Name>301tossl</Name>
<Condition>client.scheme = "http"</Condition>
</Step>
</Request>
<Response/>
</PreFlow>
如果你想下载,我这里有一个示例 -> https://github.com/carloseberhardt/edge-samples/tree/master/proxies/301ssl
【讨论】:
我会采用here 描述的类似方法,即全部捕获并重定向。捕获所有代理总是重定向。您无需提出错误,您可以在 catch all proxy 的响应流中进行。
【讨论】: