gpt4 book ai didi

php - 使用 JQuery/PHP 的跨域 Ajax 请求

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:58:47 24 4
gpt4 key购买 nike

帮助,如果你可以-

情况:

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 );
?>

然后,您可以从 foobar.com 向 http://foobar.com/getstuff.php 发出 AJAX 请求(这反过来会从您的网站发出 HTTP GET 请求服务器boobar.com并将其发送回浏览器)。

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

注意事项:

  • foobar.com 的 PHP 配置必须将 allow_url_fopen 设置为“1”。虽然这是默认设置,但某些服务器已将其禁用。
  • 对 www.boobar.com 的请求是从 foobar.com 服务器发出的,而不是从浏览器发出的。这意味着不会向 www.boobar.com 发送任何 cookie 或用户身份验证数据,无论您在请求 URL 中输入什么(“$possibly_some_other_GET_parameters”)。

关于php - 使用 JQuery/PHP 的跨域 Ajax 请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/752319/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com