Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/368.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript安全阻止我?_Javascript_Post_Xmlhttprequest - Fatal编程技术网

Javascript安全阻止我?

Javascript安全阻止我?,javascript,post,xmlhttprequest,Javascript,Post,Xmlhttprequest,我很确定这是一个安全问题阻止我这么做,但我想知道是否有一个我不知道的解决办法 我有一个脚本,可以将用户的电子邮件插入到我客户的联系人数据库中,它在IE中运行,但在FF、Chrome中工作(和往常一样)。只是想知道我是否可以将服务器添加到信任或其他东西中以使其正常工作 <script type="text/javascript"> window.onload = init; //Global XMLHTTP Request object var XmlHtt

我很确定这是一个安全问题阻止我这么做,但我想知道是否有一个我不知道的解决办法

我有一个脚本,可以将用户的电子邮件插入到我客户的联系人数据库中,它在IE中运行,但在FF、Chrome中工作(和往常一样)。只是想知道我是否可以将服务器添加到信任或其他东西中以使其正常工作

<script type="text/javascript">

    window.onload = init;

    //Global XMLHTTP Request object
    var XmlHttp;
    function CreateXmlHttp() {
        //Creating object of XMLHTTP in IE
        try {
            XmlHttp = new ActiveXObject("Msxml2.XMLHTTP");
        }
        catch (e) {
            try {
                XmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
            }
            catch (ex) {
                XmlHttp = null;
            }
        }
        //Creating object of XMLHTTP in Mozilla and Safari
        if (!XmlHttp && typeof XMLHttpRequest != "undefined") {
            XmlHttp = new XMLHttpRequest();
        }
    }

    function init() {
        var x = document.getElementsByName("btnContinue");
        x[0].onclick = submitForm;
    }

    function submitForm() {
        var x = document.getElementsByName('Email');
        if (x[0].value.length > 0) {
            CreateXmlHttp();
            XmlHttp.open("POST", "https://app.icontact.com/icp/signup.php", false);
            XmlHttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
            XmlHttp.send("redirect='http://www.xyz.com/articles.asp?ID=97'&errorredirect='http://www.xyz.com/articles.asp?ID=256'&fields_email=" +
                x[0].value + "&listid=123&specialid:123=YP7I&clientid=123&formid=123&reallistid=1&doubleopt=0&Submit=Submit");
        }
    }

</script>

window.onload=init;
//全局XMLHTTP请求对象
var-XmlHttp;
函数CreateXmlHttp(){
//在IE中创建XMLHTTP对象
试一试{
XmlHttp=新的ActiveXObject(“Msxml2.XmlHttp”);
}
捕获(e){
试一试{
XmlHttp=新的ActiveXObject(“Microsoft.XmlHttp”);
}
捕获(ex){
XmlHttp=null;
}
}
//在Mozilla和Safari中创建XMLHTTP对象
如果(!XmlHttp&&typeof XMLHttpRequest!=“未定义”){
XmlHttp=新的XMLHttpRequest();
}
}
函数init(){
var x=document.getElementsByName(“btnContinue”);
x[0]。onclick=submitForm;
}
函数submitForm(){
var x=document.getElementsByName('Email');
如果(x[0].value.length>0){
CreateXmlHttp();
open(“POST”https://app.icontact.com/icp/signup.php“,假);
setRequestHeader(“内容类型”,“应用程序/x-www-form-urlencoded”);
发送(“重定向”)http://www.xyz.com/articles.asp?ID=97“&errorredirect=”http://www.xyz.com/articles.asp?ID=256“&字段\u电子邮件=”+
x[0].value+“&listid=123&speciallid:123=YP7I&clientid=123&formid=123&reallistid=1&doubleopt=0&Submit=Submit”);
}
}
如果有任何见解,我将不胜感激


谢谢

我的第一个建议是尝试在ActiveX对象之前创建
XMLHttpRequest
。IE7及以上版本确实像其他浏览器一样支持AJAX


接下来,您应该在
open()
方法中使用相对路径。虽然我认为从你的问题来看,它需要能够在任何网站上运行?在这种情况下,我建议创建一个表单和一个iframe,并使用“old”方法。

这是一个同源策略问题。可以设置允许访问内容头,但IE ActiveXObject不会使用它们。XMLHttpRequests遵循标题,并将在支持它们的浏览器上工作

见这个问题:

虽然看起来他们并没有找到一个IE兼容的跨域帖子的解决方案


如果您可以通过web服务器代理它(向服务器发送帖子),并让服务器发送帖子,您的问题就会得到解决。

在新浏览器上,如果您可以在请求的页面上有一个特殊的HTTP头,您可以使用跨域XHR。


或者您可以使用动态脚本加载。

这将大大减少使用ajax的代码看起来可能是一个同源策略问题。如果您有访问权限,您可以尝试设置访问控制请求头,以允许您的域发出POST请求。我有点受限,因为我正在处理一个我确实无法控制的页面。该页面托管在一个第三方网站建设者上,该建设者只允许通过页面上的预定义区域注入代码……有点黑客攻击它。所以我真的无法创建新表单或导入库,除非它们都隐藏起来。我应该注意到这在Firefox中工作得很好。IE中只有轰炸。哪个版本的IE?我认为只有XMLHttpRequest遵守访问控制请求头,这意味着如果IE不使用它们,它将违反同源策略,无法工作。