gpt4 book ai didi

wcf 网络服务和使用 https 的 URL 转发

转载 作者:行者123 更新时间:2023-12-04 21:17:31 24 4
gpt4 key购买 nike

我几天来一直在研究并试图解决这个问题,但没有成功。

我在 Windows Server 2012 上的 IIS 8 上部署了 WCF Web 服务。

在开发过程中,我一直在使用服务的完整 url 来进行服务调用。

例子:

http://myserver.com/appservices/service1.svc/getdata 

但现在我需要做以下事情:
  • 我在godaddy 上有一个域名,可以说 somedomain.com , 我想要一个子域 services.somedomain.com 使用而不是完整的网址。所以我想要类似 services.somedomain.com/getdata 的东西而不是写上面的完整网址。我无法做到这一点。我试图在 Godaddy 上为子域设置 URL 转发 服务 转发到http://myserver.com/appservices/service1.svc ,这适用于浏览器,但在移动应用程序上或通过 fiddler 使用它时,我收到 301 错误。 (我尝试了有和没有 mask )。有没有办法实现这一目标?
  • 我需要为它获得 SSL 认证。我的问题是,我应该为哪个域获取它?我能得到它吗 somedomain.com 或子域 services.somedomain.com 或者对于原始域 myserver.com .在这里有点迷茫,不想买错的ssl证书

  • 为了让您大致了解我希望得到的最终结果,我需要具备以下条件:

    somedomain.com 指向部署在 iis 上的网站

    services.somedomain.com 指向部署在同一 iis 上的 wcf webservice,它将用于将从 android/iphone 调用的服务。这需要有 SSL 认证

    我已经买了 somedomain.com 来自 Godaddy

    非常感谢任何提示/帮助我真的很感激

    最佳答案

    现在我从上面的问题中对情况有了更好的了解。

    首先,由于您拥有两个域并且您是 Windows 2012 服务器的管理员,我建议您添加 somedomain.com直接到您的服务器,即不要重定向它。这更好,因为您只需要购买所需的 SSL 证书。如果您使用了重定向,您将需要 的 SSL 证书。两个域 否则您的用户将收到安全警告,因为原始请求与证书不匹配。

    此外,您想要的是 Url Rewrite,而不是 Redirect。有什么不同? A 重定向 客户端请求 让网络浏览器转到另一个网站(使用 301 error code )。 A 重写 服务器端重写 到达您的服务之前的 URL。

    您可以开始使用 Url Rewriting 将以下内容添加到您的 Web.config文件:

    <system.webServer>
    <rewrite>
    <rules>
    <!-- My rules -->
    </rules>
    </rewrite>
    </system.webServer>

    我们将添加一些规则(假设您在同一台服务器上有 services.somedomain.com)。
  • 第一条规则,重写http://services.somedomain.com/appservices/service1.svc/getdatahttp://services.somedomain.com/getdata .

    <rule name="SubDomainAppService" stopProcessing="true">
    <match url="(.*)" />
    <conditions>
    <add input="{HTTP_HOST}" pattern="^services\.somedomain\.com$" />
    </conditions>
    <action type="Rewrite" url="{HTTPS}services.somedomain.com/appservices/service1.svc/{R:1}" />
    </rule>

    这将匹配正则表达式模式 services.somedomain.com/getdata ,捕获 url 的剩余部分并在内部将其重写为 services.somedomain.com/appservices/service1.svc/getdata .此规则还强制/重写请求到 HTTPS .
  • 要为您的网站强制使用 SSL,您可以通过添加重写规则来实现。这将重写 HTTP 上的任何传入请求至 HTTPS .

    <rule name="Redirect to HTTPS" stopProcessing="true">
    <match url="(.*)" />
    <conditions>
    <add input="{HTTPS}" pattern="^OFF$" />
    </conditions>
    <action type="Redirect" url="https://{HTTP_HOST}/{R:1}" redirectType="Permanent" />
    </rule>

  • URL 重写是一个复杂的话题,我什至都不完全理解。我在回答这个问题时阅读的一些资源:
  • Rewriting the protocol
  • IIS Server Variables
  • URL rewrite and the www subdomain


  • 奖金:

    对于您的 DNS、域和 SSL 证书,我建议使用更好的提供商,例如 DNSimple .阅读特洛伊亨特的* post why he moved .来自 DNSimple 的用于子域和通配符的 SSL 证书是 on their site .

    * 如果您不知道 Troy Hunt 是谁,请阅读他关于安全性的其他文章。尤其是他关于首先入侵 API 的帖子。

    关于wcf 网络服务和使用 https 的 URL 转发,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27496289/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com