-
Creator 版本:1.9.1
-
目标平台: Web / iOS / Android / 模拟器
项目中需要用到http请求传输一点数据,用了creator中的XMLHttpRequest,为了安全性,需要请求的是https的网站,遇到安全证书的问题,服务器的证书应该是自签名的
发送到http://…的请求都没有问题,但是发送到https://…就没法发送,有没有大神能给一个绕过安全证书的办法?
Creator 版本:1.9.1
目标平台: Web / iOS / Android / 模拟器
项目中需要用到http请求传输一点数据,用了creator中的XMLHttpRequest,为了安全性,需要请求的是https的网站,遇到安全证书的问题,服务器的证书应该是自签名的
发送到http://…的请求都没有问题,但是发送到https://…就没法发送,有没有大神能给一个绕过安全证书的办法?
消息头你是怎么设置的?应该是和消息头的参数有关系。。
没设置消息头,只设置了一些必要的参数
//发送http请求
public SendAHttpRequest(url: string,
form: Form = null,
okCallback: Function = null,
errorCallback: Function = null,
failCallback: Function = null,
timeoutCallback: Function = null,
time: number = 1,
timeout: number = GameConfig.httpRequestTimeOut)
{
let xhr: XMLHttpRequest = cc.loader.getXMLHttpRequest();
xhr.timeout = timeout;
xhr.onreadystatechange = function ()
{
if (xhr.readyState == 4 && (xhr.status >= 200 && xhr.status < 400)) {
var response = xhr.responseText;
console.log(response);
let json = JSON.parse(response);
if (json.status == "ok") {
if (okCallback) {
okCallback(json.msg, json.result)
}
}
else if (json.status == "error") {
if (errorCallback) {
errorCallback(json.msg, json.result);
}
}
}
}
//出错
xhr.onerror = function (error)
{
if (failCallback) {
failCallback(error);
}
}
//超时
if (timeoutCallback) {
xhr.ontimeout = function(){timeoutCallback();}
}
else
{
xhr.ontimeout = function ()
{
if (time < GameConfig.httpRequestTryTime) {
//重新发一次请求
HttpRequest.GetInstance().SendAHttpRequest(url, form, okCallback, errorCallback, failCallback, timeoutCallback,time + 1, timeout);
}
else {
//弹出网络问题提示框
}
}
}
let p: string = "";
if (form) {
p = form.ToRequestPrama();
}
xhr.open("GET", url + p);
xhr.send(null);
}
这个 let p: string = “”;
if (form) {
p = form.ToRequestPrama();
}
仅仅是在url后面加一些需要的参数
好像 服务器端须设置设置response’Access-Control-Allow-Origin’才行.
你说的这个应该是跨域的问题,跨域方面没有问题,服务器设置过了
现在问题是 https 安全证书的问题,因为证书不被信任,之前在用unity的时候,是可以重写一个证书处理的函数,来处理证书问题的,但是现在creator里面不知道哪里弄
手工置顶
再手工置顶一次
请问这个问题解决了吗 麻烦分享一下解决方法吧 谢谢
有结果了吗?同问
可以参考 https://github.com/loopj/android-async-http/blob/606130a196c3c8d3502a6203b44ba74215588adc/library/src/main/java/com/loopj/android/http/AsyncHttpClient.java#L297-L302 和 https://stackoverflow.com/questions/34136694/android-ignore-self-signed-certificate , 在Cocos2dxHttpURLConnection.java 作类似的修改. downloader和xmlhttprequest的实现不同, downloader 已经通过参数设置已经忽略了证书错误。 XMLHTTPRequest通过类似的修改也可以忽略证书错误。
就是没有域名,证书也是自己生成的,自己用浏览器访问就必须要手动点信任才可以
好的,多谢多谢,我去研究一下
求webSocket ssl 修改引擎忽略证书的方法