我遇到了CORS,HTTPS和POST请求的问题而且无法摆脱它。
我的设置:
问题:
所以基本上,在桌面上一切都很棒,而一切都在https上。在移动设备上它不起作用。当切换到http目标时,由于混合原点,所有制动器都会制动。
更多详情
webapp正在使用Angular,它在所有平台上都没有任何问题地进行CORS POST HTTPS请求。
我正在努力工作的一小部分是使用vanilla xhr请求:
submit: function(data){
var request = this.createCORSRequest("POST",'https://heregoesthedomain.com');
if (request){
request.onload = function() {
// Success code goes here.
console.log('success');
};
request.onerror = function() {
// Error code goes here.
console.log('error');
};
request.send(JSON.stringify(data));
}
},
createCORSRequest: function(method, url){
var xhr = new XMLHttpRequest();
if ("withCredentials" in xhr) {
// Most browsers.
xhr.open(method, url, true);
} else if (typeof XDomainRequest != "undefined") {
// IE8 & IE9
xhr = new XDomainRequest();
xhr.open(method, url);
} else {
// CORS not supported.
xhr = null;
}
return xhr;
}
Angular似乎正在从域到域发布从HTTPS到HTTPS的请求,而不会在所有平台上出现问题,而我似乎无法让它在干净的JS中运行。我不能使用Angular脚本,因为我需要在Angular初始化之前进行这些调用。
更新1
为了说清楚,我在尝试5分钟后没有发布这个问题。我已经做过各种调试,我已经使用远程控制台进行移动浏览器调试等。
如果您要求提供错误消息,则根本就没有。请求返回状态:0,所有其他XMLHttp值都为空。我已经在其中一个规范中读到,当请求从不再存在活动/不存在的原点创建时会被阻止,但这不是我的情况。只需停留在同一个静态页面上。
答案 0 :(得分:-2)
由于API适用于两种类型的方案,因此您可以使请求URL与页面方案匹配(使用架构更少URL )
this.createCORSRequest("POST",'//heregoesthedomain.com')
这应解决
阻止加载混合活动内容
问题。
答案 1 :(得分:-2)
同样在IE8 / IE9上你无法正常执行任何CORS请求。您可以使用XDomain
对其进行排序从来没有那么少我会说对于网络浏览器你会遇到混合内容的问题。只有解决方案是创建特殊路由,因此您将在https上进行http和其他呼叫。 如果你有Netflix看起来他们通过在http上播放电影来解决它,因为电影块是通过http获取的,会话是通过https完成的