【发布时间】:2011-10-22 01:55:54
【问题描述】:
我很确定这是一个安全问题阻止我这样做,但我想知道是否有我不知道的解决方法...
我有一个脚本可以将用户的电子邮件注入我客户的联系人数据库,它在 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>
如果有任何见解,我将不胜感激。
谢谢!
【问题讨论】:
-
使用 ajax 的代码会少很多 api.jquery.com/jQuery.ajax
-
看起来可能是同源策略问题。如果您有权访问app.icontact.com,您可以尝试设置 Access-Control-Request-Headers 以允许您的域发出 POST 请求。
-
我有点受限,因为我正在处理一个我真的无法控制的页面。该页面托管在那些仅允许通过页面上的预定义区域注入代码的第 3 方站点构建器之一……有点破解它。所以我真的不能创建新表单或导入库,除非它们都被隐藏起来。我应该注意到这在 Firefox 中工作得很好。只在 IE 中轰炸。
-
哪个版本的IE?我认为只有 XMLHttpRequest 遵守 Access-Control-Request-Headers,这意味着如果 IE 不使用它们,它将违反同源策略并且无法正常工作。
标签: javascript post xmlhttprequest