记录Http访问服务接口出现 301 Moved Permanently

记录Http访问服务接口出现 301 Moved Permanently

一、项目背景

​ 在A服务中 需要通过远程调用 B服务接口 获取数据。A项目与B项目部署在不同的服务接口中。

  • 请求接口响应界面

​ 在调用B项目的接口时,响应的数据一直为 301 Moved Permanently Html代码,通过 response.getWriter().write(result); 将响应界面展示如下:

​ 但是直径通过浏览器界面访问该接口时,是能成功的远程调用并且返回正确的数据。排查调用远程接口的代码也没问题。 前期一直找不到原因所在!

  • 通过浏览器之间访问接口:

    ​ 注意:这里通过浏览器访问该接口时,是通过了Https协议去访问的该接口(当时没注意这一点),但是在我代码中访问的地址,由于对接文档的原因,使用的是 Http来调用。

  • A 服务调用 B服务接口代码:

java 复制代码
String strUrl = SSOServerTicket+ticket;
BufferedReader br = null;
String result = "";
try{
    URL realUrl = new URL(strUrl);
    URLConnection connection = realUrl.openConnection();
    //略:调用B服务对应接口所需要封装数据
    connection.setRequestProperty("accept", "*/*");
    connection.setRequestProperty("connection", "Keep-Alive");
    connection.setRequestProperty("user-agent", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1;SV1)");
    br = new BufferedReader(new InputStreamReader(
        connection.getInputStream()));
    String line;
    while ((line = br.readLine()) != null) {
        result += line;
    }
}catch(Exception e){
    e.printStackTrace();
}   finally {
    try {
        if (br != null) {
            br.close();
        }
    } catch (Exception e2) {
        e2.printStackTrace();
    }
}

二、问题排查

​ 通过查询资料看了很多相似的情况解决方案,尝试了很多解决方法,其中包括了 换远程调用的方式等。最终看见一个该类型的解决方案是 将请求地址的 http 改为 https 在进行远程调用,然后接口就能成功访问了!

​ 具体是什么原因导致出现 http 访问不了 https却能访问。目前暂时不能理解!在网上查询资料解释是因为:

​ B项目中全站启用了 HTTPS,在全站启用了 HTTPS 以后,用户可能还会使用 HTTP 访问,所有很多建议使用 301 Moved Permanently + HSTS ( Strict Transport Security Policy ) 的方式要求用户跳转到 HTTPS 后在访问!

相关推荐
KoiHeng42 分钟前
网络原理相关内容(二)
网络
独行soc2 小时前
2026年渗透测试面试题总结-25(题目+回答)
android·网络·安全·web安全·渗透测试·安全狮
盟接之桥2 小时前
制造业EDI数字化:连接全球供应链的桥梁
linux·运维·服务器·网络·人工智能·制造
键盘鼓手苏苏3 小时前
Flutter for OpenHarmony:debounce_throttle 防抖与节流的艺术(优化用户交互与网络请求) 深度解析与鸿蒙适配指南
网络·flutter·交互
XiaoHu02073 小时前
Linux网络编程(第四弹)
linux·网络·智能路由器
REDcker3 小时前
HTTP 协议发展详解:从 HTTP/1 到 HTTP/3
网络·网络协议·http
AC赳赳老秦4 小时前
2026 智能制造趋势:DeepSeek 助力“黑灯”工厂运营,实现生产流程自动化
网络·数据结构·算法·安全·web安全·prometheus·deepseek
乾元4 小时前
数据投毒:如何通过训练数据污染埋下“后门”
运维·人工智能·网络协议·安全·网络安全·系统架构·自动化
小鸡食米4 小时前
Keepalived高可用
运维·服务器·网络
白太岁4 小时前
操作系统开发:(10) 线程创建与调度的底层原理:从硬件行为解释线程
c语言·网络·系统架构