关于跨域:浏览器本身存在同源策略。
协议,域名,端口相同,视为同一个域,一个域内的脚本仅仅具有本域内的权限,可以理解为本域脚本只能读写本域内的资源,而无法访问其它域的资源。这种安全限制称为同源策略。
不能访问本地的json文件问题:
访问本地计算机中的文件,使用的是file协议
file协议主要用于访问本地计算机中的文件,就如同在Windows资源管理器中打开文件一样,注意它是针对本地(本机)的,简单来说,file协议是访问你本机的文件资源。
跨源请求仅支持协议方案。 :http, data, chrome, chrome-extension, https.
解决跨域问题有很多方法:更改浏览器配置,好像是安装一个插件(不推荐)
jsonp:
之前我们写html时在使用src=''的时候是可以请求到不同域的资源的。jsonp就是利用src这个特性 来达到访问其它于的资源的效果。
思路:加一个<script>把它的src指向外域,此时需要一个callback,它的作用是告诉服务器前端我要调用的函数的名字;这样服务器就把相关的数据(就是json对象)作为这个函数的参数;这样客户端就可以通过这个参数来查找所需要的值了,对其进行操作(ps:把值提取到网页中显示)。
function showData (result) {}//回调函数,参数是json数据,客户端作处理。
//向头部输入一个脚本,该脚本发起一个跨域请求
$("head").append("<script src='http://localhost:9090/student?callback=showData'><\/script>");
感觉看完很带思路的博客:JSONP原理理解 辅助清晰理解过程