ajax跨域访问

首先明确一下跨域:

怎样才能算跨域?协议,域名,端口都必须相同,才算在同一个域。

之前有见过ajax跨域一种方式,JSONP,不过看了以后感觉并不好用
比较一下json与jsonp格式的区别:

json格式:
{ "message":"获取成功", "state":"1", "result":{"name":"工作组1","id":1,"description":"11"}}
jsonp格式:
callback({ "message":"获取成功", "state":"1", "result":{"name":"工作组1","id":1,"description":"11"}})

需要后台获取数据的地方再做一次处理,不够理想,而且处理数据会麻烦一点,并且JSONP不提供错误处理。如果动态插入的代码正常运行,你可以得到返回,但是如果失败了,那么什么都不会发生。

后面找到一种比较合理的调用方式:在header中加入 Access-Control-Allow-Origin: * ,可以实现ajax同域名一样的调用效果,例如在rails项目中只需要在action的after_fileter中加入一句
<pre>response.header['Access-Control-Allow-Origin'] = '*'</pre>

不过考虑到安全性还是尽量不要写*的好,比如我想实现指定domain下可以调用则可以写成:
<pre>
response.header['Access-Control-Allow-Origin'] = request.env["HTTP_ORIGIN"] if request.env["HTTP_ORIGIN"].to_s.end_with?('.xxxx.com')
</pre>

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容