使用带有CloudFlare API的jQuery JSONP时的同源策略错误

我收到错误(XMLHttpRequest cannot load https:// www.cloudflare.com/api_json.html?tkn=&email=&z=&a=rec_load_all&callback=%3F. Origin http:// domainmanager.tech-bytes.org is not allowed by Access-Control-Allow-Origin.)尝试通过jQuery向JFSP请求发送JSONP请求时, (XMLHttpRequest cannot load https:// www.cloudflare.com/api_json.html?tkn=&email=&z=&a=rec_load_all&callback=%3F. Origin http:// domainmanager.tech-bytes.org is not allowed by Access-Control-Allow-Origin.) (由于Stack Overflow链接限制在URL中插入的空格)。 CloudFlare API声明您可以通过附加&callback=mycallback参数请求JSONP回调 。 我不确定我是否应该用某些东西替换mycallback,我尝试用它替换它? 因为这是其他一些资源所说的,或者我必须对我的代码做一些其他修改。

尝试以这种方式进行跨域请求。

  $.ajax({ url: "yourUrl", data:{paramName1: JSON.stringify(paramValue1),paramName2: JSON.stringify(paramValue2)}, contentType: "application/json; charset=utf-8", dataType: "jsonp", success: function(data) { alert(data.d); }, error: function(XMLHttpRequest, textStatus, errorThrown) { alert(textStatus); } }); 

您可以将CORS用于此目的。

示例代码:

 jQuery.support.cors = true; function CrosDom_ajax(url) { if (window.XDomainRequest && $.browser.msie && $.browser.version < 10) { xdr = new XDomainRequest(); if (xdr) { xdr.onload = function () { alert(xdr.responseText); }; xdr.open("get", url); xdr.send(); } } else { $.ajax({ url: url, success: function (response) { }, error: function (data) { } }); } } 

您还需要在服务器端编写以下代码,以允许跨域访问

 Response.AppendHeader("Access-Control-Allow-Origin", "*");