Jquery ajax get在本地主机上工作,而不是在实时https站点上工作

Jquery ajax get在本地主机上工作,而不是在实时https站点上工作,jquery,ajax,symfony,https,get,Jquery,Ajax,Symfony,Https,Get,我通过ajax get调用我的应用程序的内部路径(无跨站点脚本) 它在我的本地主机上运行得很好,但在我使用https的实时环境中,它会抛出一个“HTTP403,禁止”错误 如果这可能与问题有关,那么该路由会向 $api_url = "http://api.met.no/weatherapi/locationforecastlts/1.1/"; 这显然不是https,但客户机不应该担心这一点,因为随后提供给客户机的是保存到磁盘的文件中的数据(基于上述http路由中的信息)。我已经检查了生成的文件

我通过ajax get调用我的应用程序的内部路径(无跨站点脚本)

它在我的本地主机上运行得很好,但在我使用https的实时环境中,它会抛出一个“HTTP403,禁止”错误

如果这可能与问题有关,那么该路由会向

$api_url = "http://api.met.no/weatherapi/locationforecastlts/1.1/";
这显然不是https,但客户机不应该担心这一点,因为随后提供给客户机的是保存到磁盘的文件中的数据(基于上述http路由中的信息)。我已经检查了生成的文件,它们是具有准确内容的实际xml文件

get请求是这样完成的:

var url = '{{ path('WeatherForecast') }}';
var lat = $('#data_21').val();
var lng = $('#data_22').val();
var full_uri = url + '?lat=' + lat + '&lng=' + lng;
console.log('calling:' + full_uri);
jQuery.ajax({
     url:    full_uri,
     success: function(result) {
                $('#weatherdata').html(result);
            },
     error: function(result) {
                $('#weatherdata').html('kunde inte hämta väderdata');
            },              
    asynch: false,
}); 
此外,如果我进入chrome控制台查看错误,它会显示我尝试ajaxGet的路径,如果我单击该路径在新选项卡中打开它,它会突然工作,并向我显示jQuery ajaxGet抛出“403禁止”的数据

这可能没关系,但它是一个symfony2应用程序。

根据,您使用了错误的url-请尝试

http://api.met.no/weatherapi/locationforecastlts/1.1/?lat=63.8299;lon=20.25484

好了,伙计们,很抱歉打扰你们了。我意识到问题是什么。。。问题所在的片段被排除在问题之外,因此您无法发现它。对不起

这里是:在尝试这段代码时,我使用了一个var_dump()后跟一个die;把数据打印出来。对于我的实时环境中的jquery/ajax引擎来说,这显然不是一个足够好的响应(尽管它在我的本地主机上运行良好)

一旦我返回一个正确的响应对象,它就会工作

如果使用jQuery ajax get获取,这将在返回的数据上生成错误状态:

    var_dump($weatherdata);
    die;
这将正常工作(使用symfony2创建响应)


asynch:false,
还是
async:false,
并且结尾没有逗号?我认为您无法在https页面上执行http ajax请求。(出于浏览器安全原因)@hendr1x对于IE中的逗号是正确的,但这并不是403错误的原因。从https调用http可能会导致浏览器抱怨不安全的内容,但也不会停止它的工作。这听起来像是跨域ajax调用的问题,但它不是跨域调用。PSL是正确的,但将其更改为async没有任何区别。就像我说的,没有http数据被提供给客户端,服务器端进行操作,但是客户端不应该意识到这一点,更不用说担心了,对吗?哦,不,这是我在文件_get_contents()中使用的格式,但是在我的内部路由中,我使用&between值执行标准查询字符串。@MattiasSvensson:经度参数的名称也不同(
lng
,而不是api文档中的
lon
)。但这似乎无关紧要……是的,但这正是我将数据传递给php函数的方式,php函数反过来接受这些值,并将文件_get_contents()转换为api的正确url。
    var_dump($weatherdata);
    die;
    $response = new Response($r);
    $response->setCharset('ISO-8859-1');        
    return $response;