我编写了一个jQuery解决方案,用于将表单提交给第三方域。当表单使用普通html发布时,第三方网址接受从其他域发布的表单。我不能用jQuery和$ .post来实现这一点。
实施例: 发件人网址:http ... domain1 接收者网址:https ... domain2
当我使用普通的html在domain1.com上提交表单时,一切正常。问题是当我使用$ .post()时,一旦目标域使用https,jQuery就会抛出错误。当接收者URL是http ... domain2时,Ie8已经抛出错误。
我的问题是如何使用jQuery并以与普通html相同的方式提交表单。我希望解决方案能够在ie8中工作。另外,我不想使用Access-Control-Allow-Origin:*(在目标服务器上设置为php中的头)。有没有办法使用jQuery,并发送ajax表单与普通的html表单相同的结果?
<html lang='sv'>
<head>
<script src='js/jquery-1.7.1.min.js'></script>
<script>
$(function()
{
$.post(
// works in all browsers but ie8 with Access-Control-Allow-Origin: *
"http...domain2/?ts="+new Date().getMilliseconds(),
// breaks in chrome, didn't test others
//"https...domain2/?ts="+new Date().getMilliseconds(),
{ a:"a", b:"b" },
function(responseText)
{
alert(responseText);
},
"json"
//"html" // seems to get same result as when using "json" above
).done(function(){
alert("done!");
}).error(function(event){
alert("error!");
});
});
</script>
</head>
<body>
<!-- working form -->
<form action="https...domain2/?ts=whatever" method="post">
<textarea name="a">a</textarea>
<textarea name="b">b</textarea>
<input type="submit">
</form>
</body>
</html>
答案 0 :(得分:0)
我不确定我们是否可以违反同一原产地政策。但是我们仍然可以使用(使用代理和调整相同的原始策略) 您可以在同一个域上使用PHP代理进行跨域调用(因为像mozilla这样的浏览器不允许您进行跨域调用)。将每个reueest转发给代理并通过代理进行跨域调用。
有关示例PHP代理http://developer.yahoo.com/javascript/howto-proxy.html
的更多详细信息