2013-07-18 100 views
0

我试图加载这个公共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使用$阿贾克斯(),我收到以下错误:

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: *");

+0

顺便说一下,我无法访问该链接。 – mvw

+0

该链接适用于我。 –

+0

我现在看到它,通过VPN。请忽略我的评论。 – mvw

回答

1

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

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 
}) 
+0

谢谢@ hein-andre-gronnestad它的工作。我添加了'header('Content-type:text/json'); header('Access-Control-Allow-Origin:*');'以及echo()之前的代理 –

+0

@RaduChiriac这应该是个诀窍。不过你应该使用'Content-Type:application/json'。 –

-1

您可以尝试$就({跨域:真})。不确定它有帮助。

相关问题