【问题标题】:Access-Control-Allow-Origin not allowed on $.ajax call$.ajax 调用中不允许使用 Access-Control-Allow-Origin
【发布时间】:2013-07-17 09:28:29
【问题描述】:

我正在尝试加载这个公共 API:

https://api.paris.fr:3000/data/1.1/QueFaire/get_geo_activities/?token=3fc939c673e62e7a161ef036699c0a22bc1eed9f076da6236eaca89ab6ef4521&created=0&lat=48.8742&lon=2.3470&radius=1000&offset=0&limit=30 使用 $.ajax() 我得到以下错误:

Origin http://localhost:8000 is not allowed by Access-Control-Allow-Origin.

如何在不使用 JSONP 的情况下做到这一点? api.paris.fr 不接受 ?callback=?

由于 api.paris.fr 不是我的,如果没有header("Access-Control-Allow-Origin: *");,我怎么能做到这一点?

【问题讨论】:

  • 顺便说一句,我无法访问该链接。
  • 该链接对我有用。
  • 我现在看到了,通过 VPN。请忽略我的评论。

标签: ajax json callback jsonp cors


【解决方案1】:

你可以试试 $.ajax({crossDomain:true})。不确定它是否有帮助。

【讨论】:

    【解决方案2】:

    因为这个标题Access-Control-Allow-Origin:https://api.paris.fr 浏览器不会让你这样做。作为一种解决方法,您可以使用代理。制作一个 PHP 脚本(或类似脚本),从原始源中获取 JSON 并将其输出。

    apiproxy.php

    <?php
    echo file_get_contents("https://api.paris.fr:3000/data/1.1/QueFaire/get_geo_activities/?token=3fc939c673e62e7a161ef036699c0a22bc1eed9f076da6236eaca89ab6ef4521&created=0&lat=48.8742&lon=2.3470&radius=1000&offset=0&limit=30");
    

    jQuery

    $.get("http://yourserver.com/apiproxy.php", function(data) {
        // use data
    })
    

    【讨论】:

    • 感谢@hein-andre-gronnestad,它成功了。我在 echo() 之前也将 header('Content-type: text/json'); header('Access-Control-Allow-Origin: *'); 添加到代理中
    • @RaduChiriac 这应该可以解决问题。不过你应该使用Content-Type: application/json
    猜你喜欢
    • 2019-11-25
    • 2013-03-10
    • 2013-08-29
    • 2015-06-17
    • 1970-01-01
    • 2013-09-09
    • 2012-03-08
    • 2012-06-07
    相关资源
    最近更新 更多