强制spring hateoas生成https链接而不是http

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了强制spring hateoas生成https链接而不是http相关的知识,希望对你有一定的参考价值。

我使用的是spring-boot:1.3.3,spring-hateoas:0.19.0和spring-data-rest-core:2.4.4。

{
  "_embedded" : {
    "projects" : [ {
      "status" : "ACTIVE",
      "storageRegion" : "US",
      "dataSize" : 96850,
      "freemiumUnits" : 1,
      "_links" : {
        "self" : {
          "href" : "http://example.com/x-region-us/api/data/projects/2c9f93b755359a4a015535c19b1f0006"
        },
        "project" : {
          "href" : "http://example.com/x-region-us/api/data/projects/2c9f93b755359a4a015535c19b1f0006"
        },

这是spring-hateoas服务的内容的例子。过了一会儿,我把我的应用程序切换到了SSL。

使用traverson.js跳转(跳转)到“_links”时出现问题。发生错误:

traverson.min.js:2混合内容:'https://example.com/project-new'页面是通过HTTPS加载的,但是请求了一个不安全的XMLHttpRequest端点'http://example.com/x-region-us/api/data/submittalActions'。此请求已被阻止;内容必须通过HTTPS提供。

有没有办法迫使spring在json的“_links”部分通过HTTP生成HTTPS链接?

答案

如果您使用Apache Http Server,则需要在配置文件中添加以下行:

RequestHeader set X-Forwarded-Proto "https"
另一答案

将以下标题添加到nginx

proxy_redirect off;
proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-Proto https;
proxy_set_header X-Forwarded-Prefix $http_x_forwarded_prefix;
proxy_set_header X-Forwarded-Host $http_x_forwarded_host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-NginX-Proxy true;
proxy_set_header X-Forwarded-Protocol https;
proxy_set_header X-Forwarded-Ssl on;
proxy_set_header X-Url-Scheme https;
proxy_http_version 1.1;

以上是关于强制spring hateoas生成https链接而不是http的主要内容,如果未能解决你的问题,请参考以下文章

将HTTP方法添加到Spring HATEOAS链接

如何使用 Spring HATEOAS 放置和发布链接

为具有复合 ID 的实体自定义 HATEOAS 链接生成

Spring HATEOAS PagedResource 未在 JSON 输出中显示属性或任何链接

我可以让自定义控制器镜像 Spring-Data-Rest / Spring-Hateoas 生成的类的格式吗?

Spring HATEOAS RepresentationModel,无法设置属性链接,因为没有设置器,没有枯萎,它不是持久性构造函数的一部分