这几天在跨域问题上遇到了一些难题,需要调用远程数据库的JSON,采用JSONP后产生Uncaught SyntaxError: Unexpected token :报错。
远程服务器采用ASP.NET开发,分析原因是远程服务器不具备返回JSONP格式的函数,返回的是JSON格式数据。依靠本地服务转发或修改Chrome配置修改可实现功能。
总结浏览器跨域的解决方式有以下几种:
1.jsonp 需要目标服务器配合一个callback函数。
2.window.name+iframe 需要目标服务器响应window.name。
3.window.location.hash+iframe 同样需要目标服务器作处理。
4.html5的 postMessage+ifrme 这个也是需要目标服务器或者说是目标页面写一个postMessage,主要侧重于前端通讯。
5.CORS需要服务器设置header :Access-Control-Allow-Origin。
6.nginx反向代理这个方法一般很少有人提及,但是他可以不用目标服务器配合,不过需要你搭建一个中转nginx服务器,用于转发请求。