【问题标题】:Post data to page and get resulting data (cross domain)将数据发布到页面并获取结果数据(跨域)
【发布时间】:2014-02-23 15:12:44
【问题描述】:

我正在使用 blackbaud API,它说我需要将发布数据发送到一个 url 以接收我想要的 XML 数据。

参考:https://www.blackbaud.com/files/support/helpfiles/FAFAPI/default.htm

我不太清楚如何做到这一点,所以我使用了 jQuery 的 POST 方法并得到了跨域错误:

请求的资源上没有“Access-Control-Allow-Origin”标头

这是我用来发送请求的代码:

$(document).ready(function() {
$.post("https://www.kintera.org/api/Authentication/Login.ashx?accountid=xxxxx",
        {username: "xxxxxx", password:"xxxxxxx"},function(result) {
            console.log(result);
        });
})

这里有人能引导我走向正确的方向吗?当我对页面进行简单的 php 发布时,会显示 xml 结果,我只是不知道如何获取该信息以供自己使用。建议?

我遇到的最大问题是跨域错误

编辑: 弄清楚了。对于任何有同样问题的人来说,我使用 curl 的解决方案是

$ch = curl_init();
  curl_setopt($ch, CURLOPT_URL, "https://www.kintera.org/api/Authentication/Login.ashx?accountid=xxxxxxx");
  curl_setopt($ch, CURLOPT_POST, TRUE);
  curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query(array('username' => $username,'password' => $password)));

  curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
  curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
  $result = curl_exec($ch);
  $xml = new SimpleXMLElement($result);
  curl_close($ch);

【问题讨论】:

  • 尝试在网址中添加callback=?
  • 不幸的是,我仍然收到跨域错误:/
  • 发布到您的服务器,允许您的服务器进行登录,返回任何必要的内容。
  • 您认为您可以详细说明一下这是如何完成的吗?我如何使用服务器执行此操作?不过还是谢谢

标签: javascript php jquery xmlhttprequest cross-domain


【解决方案1】:

security reasons 不允许跨域调用 XHR(又名 Ajax)。但是有一个格式JSONP 来处理这个问题。它基本上将您的 JSON 数据放在方法名称中,可以将其评估为回调并将数据提供给您的应用程序。

使用 jQuery 时,您可能需要查看 this 以帮助您入门。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多