AJAX发布到外部网址

时间:2013-05-09 15:09:24

标签: php jquery ajax post extern

我正在尝试使用以下代码将带有ajax的数据发布到外部URL:

$(document).ready(function(){
    $('.submit_button').click(function() {
        $.ajax({
                type : 'POST',
                url : 'http://site.com/post.php',
                dataType : 'text',
                data: $("#infoForm").serialize()
        }).done(function(results) {
                    alert(results);
        });
        event.preventDefault();
    });
});

但是我收到以下错误:

  

XMLHttpRequest无法加载http://site.com/post.php。 Access-Control-Allow-Origin不允许使用null。

我还在服务器上的htaccess文件中添加了以下行

Header set Access-Control-Allow-Origin *

有人能告诉我我做错了什么以及如何将数据发布到外部网址?

2 个答案:

答案 0 :(得分:2)

外部网址是您的吗?如果不是,那是不可能的。如果是,则必须在该域上返回以下标题:

Access-Control-Allow-Origin: http://your.domain.com

或者,如果您想允许所有域:

Access-Control-Allow-Origin: *

可以在此处找到更多信息:https://developer.mozilla.org/en-US/docs/HTTP/Access_control_CORS

如果不是您的域,则必须创建代理,创建一个PHP文件,从该域获取所需的内容。并将您的ajax请求发送到您自己的域名。

答案 1 :(得分:0)

除非使用CORS,否则不能使用Ajax将请求发送到其他域。这是由same-origin policy引起的。如果您拥有服务器,则可以通过创建包含内容.htaccess的{​​{1}}文件来在Apache中设置CORS