实际生产过程中,我们经常会遇到Ajax跨域问题。当然文叔依然坚持告诉大伙,还是老老实实的别跨域。为啥?后面再说吧。
首先,咱要说Ajax有没有办法做到跨域?当然有,必需的。怎么办?
看官可以搜索 “Cross-Origin Resource Sharing“ ,这次度娘也会很给力的给出正确答案。
文叔帮找了一个简单点的说,看官可以移步这里:
http://ezzze.iteye.com/blog/978728
还有一个完整的,在这里:
http://www.nczonline.net/blog/2010/05/25/cross-domain-ajax-with-cross-origin-resource-sharing/
具体实施起来比较轻松,以php为例,我们只要在目标接口在返回结果之前加入这两行就够了:
header(" Access-Control-Allow-Origin : http://www.xdarui.com ");
header(" Access-Control-Allow-Methods : POST GET ");
这就搞定了,那么我们很爽的开始请求了。
回到正题,为毛文叔还说老老实实的别跨域呢?原因在此:
第一。这里信任需要体现在code里面,这就意味着你必需要有一个合理的办法去维护你的跨域请求的信任列表。当然这都不是很麻烦的。
第二。对方服务是否一定可信?大部分情况下的回答都是:否。
第三。如果你的情况跟文叔一样 丫域直接就是空。为毛?因为文叔这里的页面由Native起来的!那如果想到目标服务器去请求,那必然跨域。如果我允许跨域了,那尼马就二了啊……这就等于我需要把服务器完全暴露出去,太危险了……如果有想人黑老子,直接用JS写个AJAX请求不断去请求,如果这个页面有一万个人访问,我们的服务器就当顶住这增加的一万的量啊。还尼马就算了啊,如果对方想黑文叔,那直接搞个client proxy那死了啊,防都没得防啊!(当然以文叔的智慧肯定不会想到这么多的危险了,文叔只能想到不能这样做。得多谢54chen陈老湿的教诲)。