前端跨系统请求接口报错

已知:后端可以正常访问接口,服务器端是联通的

前端写代码访问接口报错

前端代码如下:

javascript 复制代码
const projectNo = 'HACFA201';
const url = `http://xxxx/api/xx/xxxxx/getProjectInfo?projectNo=${encodeURIComponent(projectNo)}`;

// 使用fetch发送GET请求
fetch(url, {
    method: 'GET', 
    headers: {
        'Content-Type': 'application/x-www-form-urlencoded' 
    }
})
.then(response => {
    if (response.ok) { 
        return response.json(); 
    } else {
        throw new Error(`网络响应异常,状态码:${response.status}`);
    }
})
.then(data => {
    console.log('委托项目信息:', data);
})
.catch(error => {
    console.error('请求发生错误:', error);
});

报错如下:

Mixed Content: The page at 'https://bxxxx was loaded over HTTPS, but requested an insecure resource 'http://xxxx/api/xx/xxxxx/getProjectInfo?projectNo=HACFA201'. This request has been blocked; the content must be served over HTTPS.

原因

因为我的网页是通过HTTPS加载的,但是尝试请求一个HTTP资源。现代浏览器出于安全考虑会阻止这种"混合内容"请求,以防止中间人攻击和其他潜在的安全风险。

要解决这个问题,需要确保API端点也使用HTTPS协议。如果API服务器支持HTTPS,请将URL中的http改为https。如果API服务器不支持HTTPS,则可能需要联系API提供者来启用HTTPS支持。

假设API服务器确实支持HTTPS,那么可以简单地修改URL如下:

javascript 复制代码
// 构造完整的URL,注意这里使用了HTTPS
const url = `https://`;

如果确定服务器支持HTTPS但仍然遇到问题,可能是由于自签名证书或证书链的问题。在这种情况下,可能需要配置服务器的SSL证书或者在客户端代码中(仅用于开发环境)忽略证书错误,但这通常不是推荐的做法,因为这会降低安全性。

如果API服务器真的不支持HTTPS,并且无法更改这一点,那么可能需要重新考虑应用程序的设计,或者寻找其他方法来保证数据传输的安全性。例如,可以在后端服务器上设置一个代理,这个代理通过HTTPS接收来自前端的请求,然后通过HTTP与内部服务通信。这样可以保持前端到后端通信的安全性。

相关推荐
ℋᙚᵐⁱᒻᵉ鲸落3 小时前
移动端滑动手势冲突:overflow: auto导致外层横向滑动失效
前端·javascript·css·vue.js·html
默_笙4 小时前
🎃 前端学了 Next.js,后端该学啥?NestJS 就是 Node 版的蜜雪冰城
前端·javascript
前端snow5 小时前
ai agent --- 实现 openclaw 定时间效果
前端
码云之上6 小时前
换模型之后,Chatbot 为什么要自己做 compact?
前端·agent·前端工程化
星栈6 小时前
自定义 UI-UX-Pro-Max 的 CSV 知识库,把 AI 生成的后台拉回行业该有的样子
前端·agent·weui
研☆香6 小时前
简单的图片上传 删除 预览
前端
ITresearchGuest6 小时前
我用 AI 一小时写了一个世界杯数据可视化平台|前端 VibeCoding 初体验
前端·人工智能·信息可视化
慧一居士7 小时前
Vite项目中使用Less步骤,详细使用示例
前端·css
花间相见8 小时前
【LangChain组件03】—— LangChain Agents 执行与状态:工作流程与状态管理实战
java·前端·langchain
kyriewen8 小时前
面试官让我用 AI 重构一个 8 年陈的 React 组件——他说他不看代码,只看我会不会拆
前端·javascript·面试