为了账号安全,请及时绑定邮箱和手机立即绑定

jQuery AJAX跨域

jQuery AJAX跨域

回首忆惘然 2019-05-24 14:39:12
jQuery AJAX跨域这是两个页面,test.php和testserver.php。test.php的<script src="scripts/jq.js" type="text/javascript"></script><script>     $(function() {         $.ajax({url:"testserver.php",             success:function() {                 alert("Success");             },             error:function() {                 alert("Error");             },             dataType:"json",             type:"get"         }     )})</script>testserver.php<?php $arr = array("element1",              "element2",              array("element31","element32"));$arr['name'] = "response";echo json_encode($arr);?>现在我的问题是:当这两个文件都在同一台服务器(localhost或web服务器)上时,它可以工作并被alert("Success")调用; 如果它位于不同的服务器上,意味着Web服务器上的testserver.php和localhost上的test.php,它就无法工作,并且alert("Error")正在执行。即使ajax中的URL更改为http://domain.com/path/to/file/testserver.php
查看完整描述

4 回答

?
慕标5832272

TA贡献1966条经验 获得超4个赞

您可以通过添加Access-Control-Allow-Origin来通过HTTP标头控制此操作。将其设置为*将接受来自任何域的跨域AJAX请求。

使用PHP非常简单,只需将以下行添加到您希望从域外访问的脚本中:

header("Access-Control-Allow-Origin: *");

不要忘记在httpd.conf中启用mod_headers模块。


查看完整回答
反对 回复 2019-05-24
?
犯罪嫌疑人X

TA贡献2080条经验 获得超4个赞

您需要查看同源策略

在计算中,相同的源策略是许多浏览器端编程语言(如JavaScript)的重要安全概念。该策略允许在源自同一站点的页面上运行的脚本在没有特定限制的情况下访问彼此的方法和属性,但阻止访问不同站点上的页面上的大多数方法和属性。

为了能够获取数据,它必须是:

相同的协议和主机

您需要实现JSONP来解决它。


查看完整回答
反对 回复 2019-05-24
  • 4 回答
  • 0 关注
  • 2946 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信