当前位置: 首页 > 知识库问答 >
问题:

从https重定向到HTTP?

潘辰龙
2023-03-14

奇怪的问题。我使用FullCalendar向服务器上的endpoint发起ajax请求。终点是:

https://my_website/events/?start=2019-03-31&end=2019-05-12&_=1555698739056

请注意,它是显式的HTTPS。但是,当我发起一个请求时(即当Fullcalendar发起一个请求时),我会得到一个301和一个到非HTTPSendpoint的重定向:

因为页面是通过HTTPS加载的,所以失败。

endpoint工作正常--当我将它加载到浏览器中时,我会得到预期的json输出(通过https)。在此页面上发生的其他ajax请求也能正常工作,我在此站点的其他地方成功地使用Fullcalendar(到另一个endpoint)做了完全相同的事情。这只是一个出人意料的场景。

可能值得注意的是,它位于nginx反向代理/负载均衡器后面的docker容器中;站点配置非常简单:

upstream docker {
    server localhost:8701;
    server localhost:8702;
  }

server {
    server_name my_website;
    location / {
      proxy_pass http://docker;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
      # proxy_set_header                HTTP_Country-Code $geoip_country_code;
        proxy_pass_request_headers      on;
    }

    listen 443 ssl; # managed by Certbot
    ssl_certificate /etc/letsencrypt/live/my_website/fullchain.pem; # managed by Certbot
    ssl_certificate_key /etc/letsencrypt/live/my_website/privkey.pem; # managed by Certbot
    include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot
    ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot

}

server {
    if ($host = my_website) {
        return 301 https://$host$request_uri;
    } # managed by Certbot

    listen 80;
    server_name my_website;
    return 404; # managed by Certbot

}

共有1个答案

昝浩阔
2023-03-14

这似乎是因为您没有使用规范URL,而您的后端正在通过这些301重定向强制执行这样的URL,而实际上它并不知道规范地址方案。

>

  • 最好的解决方案是修复前端代码,使其始终使用规范的URL。例如,在您提供的示例中,APIendpoint中是否存在尾随斜杠是有区别的。

    您可能应该将后端配置为正确地知道它是通过https访问的,例如,在nginx中的所有其他proto_set_header指令旁边添加如下内容,以终止https并将通信量传递给后端:

    proto_set_header    X-Forwarded-Proto   $scheme;
    
      null

  •  类似资料:
    • RewriteCond%{SERVER\u PORT}上的RewriteEngine!443重写规则^(/(.*)?$https://%{HTTP_HOST}/$1[R=301,L] 这是我在. htaccess文件中使用的命令,当我键入arion-software.co.uk它不能正确重定向。任何想法?

    • 我的服务器正在从http重定向到HTTPS。我希望允许使用http和HTTPS访问我的应用程序。我怎么能这么做?在我的Wildfly8.2日志中有这样两行:

    • 隐私设置->清除浏览数据(从时间开始) https/ssl->管理证书->删除所有项(包括证书) 检查没有书签。 Firefox也有类似的问题,但它的解决方案不适用于Chrome。有人对我能做些什么有什么建议吗?提前感谢您的帮助!

    • 我正在使用Firefox,在设置服务器时,我一直在摆弄重定向。现在,Firefox已经缓存了从http://example.com/到https://example.com/和从http://sub.example.com/到https://sub.example.com/的301重定向。 我已经尝试了以下几件事: null 我的Firefox版本是38.0.1,我使用的是Windows8.1。我

    • 问题内容: 我正在一个购物车网站上工作,我想在用户输入帐单明细时将用户重定向到HTTPS页面,并保持下一页的HTTPS连接,直到他注销。 为此,我需要在服务器上安装什么(我正在使用Apache),如何从PHP进行重定向? 问题答案: 尝试这样的事情(应该适用于Apache和IIS):

    • 下面是使用“ProxyPass”和“ProxyPassReverse”的apache反向代理配置片段 当我在wget命令下面运行时,它不知何故重定向到http: 如果我使用“/artifactory/webapp/#/home”运行wget命令,它可以在HTTPS上工作: 我没有在代理配置文件的任何地方定义重定向。 有人能提出这种行为背后的原因吗??如何避免将其重定向到HTTP?