为什么跨域ajax帖子不起作用?

时间:2015-11-17 05:56:31

标签: php jquery ajax

我正在尝试从site2发送数据到site1。但我得到错误,答案没有回来,我做错了什么?这是代码ajax POST

  $.ajax({
  url: "site1/form.php",
    crossDomain: true,
    type: "POST",
    data: {a: 'a1'},
    contentType: "application/json; charset=utf-8;",
    async: false,
    dataType: 'jsonp',
    success: function(data){
        console.log('callback success');
        console.log(data);
    },
    error: function(xhr, status, error) {
        console.log(status + '; ' + error);
    }
});

这是来自site1的表单

$a= $_POST['a']; echo $a;

可能有什么不对?在.htaccess的site1上的标题我订购..

2 个答案:

答案 0 :(得分:0)

在跨域ajax请求中,现代浏览器在使用方法preflight发出实际请求之前向域发送option请求。如果您定义自定义标题(在您的情况下已定义content-type),则它将被阻止。您可以允许远程服务器中的所有请求或特定域接受所有类型请求(在apache中,您可以在htaccess中执行此操作,在IIS服务器中,您必须更改webconfig.xml

答案 1 :(得分:0)

出于明显的安全原因。请参阅CORS。默认情况下禁止跨域ajax请求,您可以启用它们,但这是一种风险,因为任何其他站点都可以代表其用户访问您的数据。

出于安全原因,请参阅this答案。