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

时间:2016-06-16 09:35:51

标签: https spring-boot hateoas spring-hateoas

我正在使用 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在“_ links”中通过 HTTP 生成 HTTPS 链接“是json的一部分?

2 个答案:

答案 0 :(得分:1)

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

RequestHeader set X-Forwarded-Proto "https"

答案 1 :(得分:0)

将以下标题添加到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;