如图 ie8 并没有你这个问题
---------补充,别说ie8了,ie5我都跑通了---------
前端代码如下
var $dom = $("#root");
$.ajax({
url: 'https://localhost:3000/demo/api/sayHi',
dataType:"json",
data:{name:"jack"},
type: 'post',
success: function(res){
$dom.text(res.data);
},
error: function(err){
$dom.text('错误'+err.toString());
}
})
后端代码如下,用nodejs实现的,其他语言也行,反正接口能返回东西就行
const express = require("express");
const app = express();
const fs = require("fs");
//读取ssl的key
const privateKey = fs.readFileSync('./private.pem', 'utf8');
//读取ssl的证书
const certificate = fs.readFileSync('./file.crt', 'utf8');
//装箱
const credentials = { key: privateKey, cert: certificate };
//https的server
const SSLServer = require("https").createServer(credentials, app);
const router = express.Router();
const bodyParser = require("body-parser");
// parse application/x-www-form-urlencoded
app.use(bodyParser.urlencoded({ extended: false }));
// parse application/json
app.use(bodyParser.json());
//子路由
app.use("/demo", router);
/************常规接口开始*************/
//sayHi
router.post("/api/sayHi", (req, res) => {
const { name } = req.body;
res.json({code:0,message:"success",data:"hi,"+name})
});
/************常规接口结束*************/
//托管静态资源
app.use("/demo", express.static('static'));
//404处理
app.use(function (req, res, next) {
res.setHeader("Content-Type", "text/html;charset=utf-8");
res.status(404).sendFile(__dirname + "/static/404.html");
});
//其它错误处理如500
app.use(function (err, req, res, next) {
if (err) {
console.log(err.stack.toString());
res.setHeader("Content-Type", "text/plain;charset=utf-8");
res.status(500).send('服务器大姨妈了!
servers is broken');
}
});
SSLServer.listen("3000", function () {
console.log("https服务器已启动");
});
以下截图为我上面贴的代码以表证据
-----------结论/推理------------
你上面所说的同一个接口 一个http成功一个https不成功
那要取决于你访问的这种网页是什么协议 如果你网页访问的地址是http的 你去访问一个https的 多半浏览器会阻止的
这句话可能比较拗口,见谅,我文字表述能力不强。。你自己意会一下吧