当前位置: 首页 > 面试题库 >

使用JQuery / PHP的跨域Ajax请求

易飞文
2023-03-14
问题内容

帮助,如果您可以-

情况:

http://foobar.com包含一个远程托管的Javacript文件(http://boobar.com/stuff.js)。

目标是从foobar.com上的远程托管php脚本中获取警报

我在stuff.js中尝试了以下代码:

$.ajax({
  type: "GET",
  url: "http://www.boobar.com/script.php?callback=?",
  dataType: 'jsonp',
  success: function(result) { alert(result); }
});

没运气。

$.getJSON("http://www.boobar.com/script.php?jsonp=?",
  function(data) { alert(data); }
);

也没有运气。

在php端,我尝试了以下两种方法:

return json_encode(array(0 => 'test'));

echo json_encode(array(0 => 'test'));

在Firefox中,出现安全错误。我了解它认为我违反了安全模型。但是,根据jquery文档,我应该能够完成此操作。


问题答案:

该错误似乎是Same Origin
Policy的
一项安全功能:为简化起见,您只能在原始服务器(http://foobar.com)上对内容进行AJAX请求。解决此问题的一种方法是在原始服务器上创建一个简单的外观,例如:

 <?php
 // this file resides at http://foobar.com/getstuff.php
 echo file_get_contents('http://www.boobar.com/script.php?callback=?'
          . $possibly_some_other_GET_parameters );
 ?>

然后,从foob​​ar.com,可以使一个AJAX请求http://foobar.com/getstuff.php(这反过来又使一个HTTP
GET请求 从您的Web服务器boobar.com并将其发送回浏览器)。

对于浏览器,请求将转到原始服务器,并且被允许(浏览器无法知道响应来自幕后其他地方)。

注意事项:

  • foob​​ar.com上的PHP配置必须allow_url_fopen设置为“ 1”。尽管这是默认设置,但某些服务器已将其禁用。
  • 对www.boobar.com的请求是从foobar.com 服务器 发出的,而不是从浏览器发出的。这意味着,无论您输入请求URL(“ $possibly_some_other_GET_parameters”)中的任何内容,都不会将Cookie或用户身份验证数据发送到www.boobar.com 。


 类似资料:
  • 问题内容: 我想用以下代码用jquery ajax解析JSON数组数据: 我的JSON数据是: 但是我没有任何输出…任何人请帮忙… 问题答案: 概念解释 您是否正在尝试进行跨域AJAX调用?意思是,您的服务不在同一Web应用程序路径中托管吗?您的Web服务必须支持方法注入才能执行JSONP。 您的代码看起来不错,并且如果您的Web服务和Web应用程序托管在同一域中,则该代码应该可以正常工作。 当您

  • 本文向大家介绍jQuery Ajax实现跨域请求,包括了jQuery Ajax实现跨域请求的使用技巧和注意事项,需要的朋友参考一下 本文实例为大家分享了jQuery Ajax跨域请求的具体代码,供大家参考,具体内容如下 html 代码清单: 服务端 validate.php 代码清单: 效果图: 以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持呐喊教程。

  • 本文向大家介绍jQuery使用ajax跨域请求获取数据,包括了jQuery使用ajax跨域请求获取数据的使用技巧和注意事项,需要的朋友参考一下 跨域是我在日常面试中经常会问到的问题,这词在前端界出现的频率不低,主要原因还是由于安全限制(同源策略, 即JavaScript或Cookie只能访问同域下的内容),因为我们在日常的项目开发时会不可避免的需要进行跨域操作,所以跨域能力也算是前端工程师的基本功

  • 问题内容: 这是两个页面,test.php和testserver.php。 test.php testserver.php 现在我的问题是:当这两个文件都在同一服务器上(本地主机或Web服务器)时,它可以工作并被调用;如果它在不同的服务器上,则意味着Web服务器上的testserver.php和localhost上的test.php,它不起作用,并且正在执行。即使ajax内的URL更改为http:

  • 我读过关于跨源请求的文章。考虑到此资源链接:

  • 问题内容: 对于一个项目,我需要获取其他不同域的网页的源代码。我尝试了以下代码: 我仍然没有得到任何结果,只是一个空白的警告框。 问题答案: 默认情况下,所有浏览器都限制跨域请求,您可以使用YQL作为代理来解决此问题。在此处查看指南:http://ajaxian.com/archives/using-yql-as-a- proxy-for-cross-domain-ajax