Rest 在IIS中代理私有Prismic回购-可能吗?

Rest 在IIS中代理私有Prismic回购-可能吗?,rest,reverse-proxy,iis-10,prismic.io,Rest,Reverse Proxy,Iis 10,Prismic.io,我有一个Angular(8)解决方案,它通过Angular所在的IIS上的反向代理与公共回购进行对话 现在我想和一家私人Prismic回购公司谈谈 如何设置代理以添加标题等? 这是否可能,或者授权是否需要一个步骤 (我也没有让它发挥作用。有一个关于如何让它发挥作用的问题——这就是我不可能“简单地代理”私人Prismic回购的原因。) 增编: private Prismic repo有一个密钥,该密钥不能传递给客户。 我希望在代理中添加秘密,因为我完全控制代理。正如我在评论中所暗示的,我想我已经被

我有一个Angular(8)解决方案,它通过Angular所在的IIS上的反向代理与公共回购进行对话

现在我想和一家私人Prismic回购公司谈谈

如何设置代理以添加标题等?
这是否可能,或者授权是否需要一个步骤

(我也没有让它发挥作用。有一个关于如何让它发挥作用的问题——这就是我不可能“简单地代理”私人Prismic回购的原因。)

增编:

private Prismic repo有一个密钥,该密钥不能传递给客户。

我希望在代理中添加秘密,因为我完全控制代理。

正如我在评论中所暗示的,我想我已经被一个
反向代理
的事情偏离了方向。如果我还远的话,请纠正我

就我的理解来看,公共和私有Prismic repo之间的唯一区别是额外的安全层(读:API密钥),您必须随每个请求一起传递

Prismic内容通过可配置为私有的API分发。在私有模式下,API要求客户端应用程序进行自身身份验证,以查询、检索和显示存储在Prismic存储库中的任何内容

为了证明我不需要代理的观点,我在Prismic中启动了一个新的私人回购协议,并以一个简单的请求为例编写了一个quick。需要注意的是,
PrismicProvider
设置:

PrismicProvider.setApiEndpoint('https://my-instance.cdn.prismic.io/api/v2');
setAccessToken(“我的主密钥”);
setClientId('some client id');
PrismicProvider.setClientSecret('some_secret');
(这支笔有工作凭证,但这是一个一次性实例,我为这个答案打开了它,所以这些凭证可能很快就会过期)

这就引出了我的第一个建议: 使用Angular客户端库(或者未指定版本)。只有当您不关心api密钥泄露给公众时才执行此操作(例如,这可能是内部网站的一个选项)

假设你想把钥匙保密 这可能就是你的情况。在这种情况下,类似的流是有意义的。简言之,您以某种方式授权Angular SPA的客户端访问IIS托管的应用程序,并使用库来满足客户端的请求


回答您的具体问题:是的,可以实现从SPA调用Prismic的代理。您可以从开始并建立。

完全可以使用IIS的反向代理连接到Prismic private repo。
我们需要的是设置IIS的反向代理,并为其提供用于Prismic授权的秘密


在撰写本文时,我发现没有办法只安装IIS的反向代理,但必须安装名为的整个服务器场扩展

具有反向代理的是站点,而不是服务器,因此更新
web.config
,数据对应于:(grok xml注释)


. IISManager->URLRewrite->ViewServerVariables->Add.
我没有费心去找出这些东西存放在哪里


用于调试URL重写问题。

是您的一个选项吗?@timur如果IIS不适用于此nginx,则可以使用它。但打勾作为答案应该包含为什么IIS不工作的信息。我想我已经偏离了方向:我不相信这与反向代理有关,因为Prismic API始终是一个外部端点。从公共到私有的转换意味着您必须在请求中提供API密钥。可能会提供一些见解。让我知道你要找的是不是这个
<system.webServer>
    <rewrite>
        <rules>
            <!-- `stopProcessing` is, I guess, the normal case. -->
            <rule name="CMS rewrite" stopProcessing="true">

                <!-- `"^cms(.*)"` matches `cms`, `cms/` and `cmsanything` which might not be what was intended. -->
                <match url="^cms(.*)" />

                <!-- Is is important to below Not use the `cdn` as in `yoursite.cdn.prismic.io` that is used for the queries. -->
                <!-- `logRewrittenUrl` can be handy for tracing the target. -->
                <action type="Rewrite" url="https://yoursite.prismic.io/api/v2" logRewrittenUrl="true" />

                <serverVariables>
                    <!-- Replace `the-token` with the token found when setting the Prismic repo to private. -->
                    <set name="HTTP_AUTHORIZATION" value="Bearer the-token" />
                </serverVariables>
            </rule>
...