2

我在我的 JS 中从 AJAX 调用跨域 Web 服务 api,但出现以下错误:

“XMLHttpRequest 无法加载http://url2.com/social/polling/get_poll。Access-Control-Allow-Origin不允许来源http://url1.com ”

我也尝试Access-Control-Allow-Origin在请求的标头中设置为 *****,但是没有成功,我得到了同样的错误

以下是我实际在做的事情:

 $.ajax({
        type : "POST",
        dataType : "jsonp",
        data : {
            pollId : pollId
        },
        /* header : {'Access-Control-Allow-Origin':'*'}, */
        url : "http://url2.com/social/rs/polling/get_poll",
        beforeSend : function(xhr) {
            xhr.setRequestHeader('Access-Control-Allow-Origin',
                    '*');
        },

        success : function(response) {
            var html;

            var html = "<div ><h2>" + response.topic + "</h2>";
            for ( var index = 0; index < response.options.length; index++) {
                html = html
                        + "<input type=\"checkbox\" name=\"option\" value=\""
                        + response.options[index] + "\"  />"
                        + response.options[index] + "<br/>";
            }
            html = html
                    + "<input type=\"button\" value=\"Submit\" onclick=\"pollIT("
                    + response.pollId + ", '" + response.topic
                    + "'); \" /></div>";
            $("#question").append("");
            $("#question").append(html);
            html = "";

        },
        error : function(e) {
            console.log(e);
            return false;
        }

    });

我也尝试将标题设置为

header : {'Access-Control-Allow-Origin':'*'}

但仍然没有运气。有人对此有任何想法吗?

4

1 回答 1

0

跨域 AJAX 需要在您请求的服务器上允许,它不能在请求中授权。

所以你需要访问 url1.com 的服务器如果你这样做了,这里有一个关于如何启用这个访问的指南: http ://www.webdevdoor.com/jquery/cross-domain-browser-json-ajax/

如果您没有访问权限并且想要解决此问题,您可以使用 AJAX 在您自己的服务器上调用一个脚本,该脚本将向外部服务器发出 CURL 请求。

于 2013-09-26T05:36:30.437 回答