解决筹划(一一对应):
- 建议删除代码中手动添加的*,只用项目设备中的即可
- 建议删除IIS下的设备*,只用项目设备中的即可
解决筹划: 后端封闭对应的安然设备
若何解决ajax跨域
一般ajax跨域解决就是经由过程JSONP解决或者CORS解决,如以下:(留意,如今已经几乎不会再应用JSONP了,所以JSONP懂得下即可)
jsonp解决跨域问题是一个比较古老的筹划(实际中不推荐应用),这里做简单介绍(实际项目中如不雅要应用JSONP,一般会应用JQ等对JSONP进行了封装的类库来进行ajax请求)
JSONP之所以可以或许用来解决跨域筹划,主如果因为 <script> 脚本拥有跨域才能,而JSONP恰是应用这一点来实现。具体道理如图
实现道理

跨域是一个老生常谈的话题,网上也有大年夜量跨域的材料,并且有不少精品(比如阮一峰前辈的),然则身为一个前端人员不该该浅尝而止,故而才有了本文。
JSONP的实现步调大年夜致如下(参考潦攀来源中的文┞仿)
- 客户端网页网页经由过程添加一个<script>元素,向办事器请求JSON数据,这种做法不受同源政策限制
- function addScriptTag(src) {
- var script = document.createElement('script');
- script.setAttribute("type","text/javascript");
- script.src = src;
- document.body.appendChild(script);
- }
- window.onload = function () {
- addScriptTag('http://example.com/ip?callback=foo');
- }
- function foo(data) {
- console.log('response data: ' + JSON.stringify(data));
- };
请求时,接口地址是作为构建出的脚本标签的src的,如许,当脚本标签构建出来时,最终的src是接口返回的内容
- 办事端对应的接口在返回参数外面添加函数担保层
- foo({
- "test": "testData"
- });
- 因为<script>元素请求的脚本,直接作为代码运行。这时,只要浏览器定义了foo函数,该函数就会急速调用。作为参数的JSON数据被视为JavaScript对象,而不是字符串,是以避免了应用JSON.parse的步调。
留意,一般的JSONP接口和通俗接口返回数据是有区其余,所以接口如不雅要做JSONO兼容,须要进行断定是否有对应callback关键字参数,如不雅有则是JSONP请求,返回JSONP数据,不然返回通俗数据
应用留意
基于JSONP的实现道理,所以JSONP只能是“GET”请求,不克不及进行较为复杂的POST和其它请求,所以碰到那种情况,就得参考下面的CORS解决跨域了(所以如今它也根本被镌汰了)
CORS解决跨域问题
CORS的道理上文中已经介绍了,这里重要介绍的是,实际项目中,后端应当若何设备以解决问题(因为大年夜量项目实践都是由后端进行解决的),这里整顿了一些常见的后端解决筹划:
PHP后台设备
PHP后台得设备几乎是所有后台中最为简单的,遵守如下步调即可:
- 第一步:设备Php 后台许可跨域
- <?php
- header('Access-Control-Allow-Origin: *');
- header('Access-Control-Allow-Headers: Origin, X-Requested-With, Content-Type, Accept');
- //重要为跨域CORS设备的两大年夜根本信息,Origin和headers
- 第二步:设备Apache web办事器跨域(httpd.conf中)
原始代码
- <Directory />
推荐阅读
【限时免费】岁尾最强一次云计算大年夜会,看传统、社区、互联网企业若何碰撞? 【51CTO.com原创稿件】CISQ董事长兼首席履行官Bill Curtis博士也指出,他曾几回来到中国,致力于推动国际代>>>详细阅读
本文标题:ajax跨域,这应该是最全的解决方案了
地址:http://www.17bianji.com/lsqh/39951.html
1/2 1

网友点评
精彩导读
科技快报
品牌展示