【问题标题】:Cross Domain URL in jQueryjQuery 中的跨域 URL
【发布时间】:2013-02-01 13:28:23
【问题描述】:

我做了一个非常简单的 index.php 代码如下

<!DOCTYPE html> 
<head> 
<script type="text/javascript" src="js/jquery.js"></script>
<script type="text/javascript" src="js/httpGet.js"></script>
<script type="text/javascript" src="js/jquery.mobile.js"></script>   

</head> 

<body>
 <input id="string" type="text"/>
 <input id="button" type= "button" value="Check" />

</body>
</html>

在这段 HTML 代码中,我们从用户那里得到一个号码并调用 httpgGet.js 文件。 httpGet.js 是:

$('#button').click(function() {
        var string = $('#string').val();
    $.post('http://...../isprime.php',{number: string},function(data){
      alert(data);
            } 
     }

我们将用户编号发送到 isprime.php 文件,在该文件中检查用户编号是否为质数。当我说 $.post('php/isprime.php',.....) 它工作得很好,但是当我想从另一台计算机调用 isprime.php 时,它就不起作用了。

我的意思是 $.post('192.168.1.1/test/isprime.php'....) 给了我一个未找到的错误。

文件存在,我可以使用浏览器直接调用来运行代码。当我在浏览器中输入 192.168.1.1/test/isprime.php 时,该文件是可访问的,但是从 js 文件中,它失败了。显然,我也可以 ping 192.168.1.1。即使使用 FireBug 也检查了代码,但并不彻底。

我搜索了很多,发现浏览器不允许跨域调用(我猜是出于安全目的),但我找不到解决这个问题的解决方案。 YQL 有一些东西(这是一种查询语言,我不知道我是否可以使用它)。我还看到了一些关于 cULR 的东西,但我不确定它是否也有效。

请帮助。我真的需要它。 非常感谢。

【问题讨论】:

  • 首先使用完整 URL 时使用 http:// 方案,其次:您必须为您的网站启用 CORS
  • 您好@Akam,感谢您的回复。我也使用http,但失败了。我在第二台计算机上使用 XAMPP Web 服务器来扮演服务器的角色。最终,此 php 代码将托管在运行网络服务器(如 PAW)的 Android 移动设备上。启用 CORS 有帮助吗?

标签: php javascript jquery cross-domain cross-domain-policy


【解决方案1】:

在我看来,最明显的解决方案是使用 cURL 库在没有跨域请求限制的服务器端发出请求(正如您所提到的,是的,它会起作用)。当然,您需要在服务器上安装 cURL 库。 PHP cURL manual 应该有足够的信息来帮助您入门。

【讨论】:

  • 感谢@Default,我的问题是如何访问服务器并在那里运行代码。因为 cURL 是一个 PhP 库,无法在移动端执行 PhP。如果我可以访问服务器运行 PhP m 问题就解决了。我是初学者,所以我可能不知道基础知识。请不要犹豫,告诉我所有的基础知识。
  • 对,所以如果您向服务器上的某个端点发出 AJAX 请求(正如您已经通过 jQuery#post 所做的那样),您可以使用 cURL 函数发出跨域请求,然后返回您需要的信息返回给客户。您将要查看的函数是 curl_init()、curl_setopt()、curl_exec() 和 curl_close()(也可能是 curl_getinfo())。希望这会有所帮助。
猜你喜欢
  • 2011-03-31
  • 2013-06-04
  • 2015-10-06
  • 2012-02-09
  • 2014-04-16
  • 2017-05-09
  • 2012-06-01
  • 2013-02-28
相关资源
最近更新 更多