【问题标题】:Restlet how to build relates HATEAOS links properly?Restlet如何正确建立关联HATEAOS链接?
【发布时间】:2015-10-18 13:34:30
【问题描述】:

在反向代理/负载均衡器后面构建 webapp,我需要获取请求的正确原始 URL(负载均衡器重写前)。

我使用 getReference()(在 ServerResource 中)添加 HATEAOS 意义上的自引用。但是文档说 getReference() 可以通过路由进行操作,目前它不包括正确的方案(http,而不是 https - 负载均衡器终止 https)。

这里是关于转发的标头的 NGINX 配置。

location /api {
        proxy_pass http://test-service;
        proxy_pass_header X-Host;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X_FORWARDED_PROTO $scheme;
}

反向代理配置是否不正确,或者我应该使用 getOriginalReference() 方法。是否有一些文档解释了“原始”引用是如何构造的,哪些字段在反向代理后面使用。

【问题讨论】:

    标签: nginx reverse-proxy restlet hateoas


    【解决方案1】:

    我认为由于潜在的安全问题,必须在 Restlet 中显式启用对 X-Forwarded-For 标头的支持。

    这是在服务器连接器级别启用此功能的方法:

    Component c = new Component();
    Server server = c.getServers().add(Protocol.HTTP, 8182);
    server.getContext().getParameters().add("useForwardedForHeader", "true");
    c.start();
    

    有关详细信息,请参阅此页面:http://restlet.com/technical-resources/restlet-framework/guide/2.3/core/base/connectors

    完成后,ClientInfo 对象中会提供相应的提示:

    List<String> forwardedAddresses
       = request.getClientInfo().getForwardedAddresses();
    

    headers 和 Restlet API 之间的映射见此页面:http://restlet.com/technical-resources/restlet-framework/guide/2.2/core/http-headers-mapping

    希望对你有帮助, 蒂埃里

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-11-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多