AJAX跨越访问解决方案

1、JSONP

  JSONP参考教材:http://kb.cnblogs.com/page/139725/

  JSONP是利用HTML的script标签一下特性:

    1)引用外部资源不受跨域问题影响

    2)script标签加载完js资源后立马自动执行加载的js

    3)新加载的js作用域为全局

  script标签的src属性指向服务端动态生成js文件,该js文件的基本格式如下:

callback(jsonData);

  其中callback函数在客户端定义,名称不定,由script标签通过url传参传递到服务器,jsonData为目标数据。

  简单的说就是:在网页中定义一个全局函数,让后通过script标签访问服务器并带上这个全局函数名,服务器收到这个函数名动态生成上文提到的js文件,网页加载完后就会执行全局函数。

 优点:

  简单方便,通过封装能做到像写AJAX一样;

 缺点:

  1)服务器接口需要改变

  2)无法获获知接口调用失败

2、Access-Control-Allow-Origin

  在返回的响应信息中,使用 Access-Control-Allow-Origin 头来控制哪些域名的脚本可以访问该资源。如果设置 Access-Control-Allow-Origin:*,则允许所有域名的脚本访问该资源。如果有多个,则只需要使用逗号分隔开即可。

  注意:在服务器端,Access-Control-Allow-Origin 响应头中的端口信息不能省略。

 优点:

  1)简单方便

  2)客户端不需要作任何改动

 缺点:

  1)服务端安全性降低

  2)需要服务端配合修改报文头

3、利用iframe

  推荐教程:http://www.jb51.net/article/33711.htm

 优点:

 缺点:

  1)数据迂回传递

  2)需在服务端部署response.html

  3)回调函数必须为全局函数

时间: 2024-10-12 20:25:51

AJAX跨越访问解决方案的相关文章

js/ajax跨越访问-jsonp的原理和实例(javascript和jquery实现代码)

最近做了一个项目,需要用子域名调用主域名下的一个现有的功能,于是想到了用jsonp来解决,在我们平常的项目中不乏有这种需求的朋友,于是记录下来以便以后查阅同时也希望能帮到大家,需要了解的朋友可以参考下 很庆幸,我又见到了末日后新升的太阳,所以我还能在这里写文章,言归正传哈,最近做了一个项目,需要用子域名调用主域名下的一个现有的功能,于是想到了用jsonp来解决,在我们平常的项目中不乏有这种需求的朋友,于是记录下来以便以后查阅同时也希望能帮到大家. 什么是JSONP协议? JSONP即JSON w

.NET中Ajax跨越访问

说明:我们知道Ajax是不能进行跨域请求的,我们是可以设置我们的项目让Ajax支持跨域访问. 跨域: aa.xxx.com 中用ajax请求  bb.ccc.com中的数据成为跨域. 找了一些文章看了的, 无非都是说 jsonp是get的解决办法,cross是post请求的解决办法.这边自己也测试了下.这边记录一下. ①我们先准备好我们的接口 然后需要我们发布一下,这个就是我们的接口地址了() :http://apitest.sealee.xin/api/ajaxcross (get/post(

IE8 环境的 JQuery 中的 $.ajax 拒绝访问---解决方案

需求是兼容到 IE8. $.ajax 总是请求失败,直接跳转到 error 函数中,报错:拒绝访问. 网上的一些解决方法都试过了还是没有用,比如再请求之前设置 jQuery.support.cors = true,并调用 jquery.xdomainrequest.min.js .更改 IE 设置,将通过域访问数据设置为允许.这些方法都试过了,都没有用. 最后是在 $.ajax 运行之前添加如下代码成功的 . jQuery.support.cors = true; jQuery.ajaxSetu

No 'Access-Control-Allow-Origin' Ajax跨域访问解决方案

No 'Access-Control-Allow-Origin' header is present on the requested resource. 当使用ajax访问远程服务器时,请求失败,浏览器报如上错误.这是出于安全的考虑,默认禁止跨域访问导致的. 一.什么是跨域访问 举个栗子:在A网站中,我们希望使用Ajax来获得B网站中的特定内容.如果A网站与B网站不在同一个域中,那么就出现了跨域访问问题.你可以理解为两个域名之间不能跨过域名来发送请求或者请求数据,否则就是不安全的.跨域访问违反

[转]No 'Access-Control-Allow-Origin' header is present on the requested resource.'Ajax跨域访问解决方案

原 https://blog.csdn.net/zhoucheng05_13/article/details/53580683 No 'Access-Control-Allow-Origin' header is present on the requested resource. 什么是跨域访问 举个栗子:在A网站中,我们希望使用Ajax来获得B网站中的特定内容.如果A网站与B网站不在同一个域中,那么就出现了跨域访问问题.你可以理解为两个域名之间不能跨过域名来发送请求或者请求数据,否则就是不安

解决ant Design dva ajax跨越请求 (status=0)

今天实现了antd作为前端展现,python flask作为后端的数据填充,完全两个独立的服务:过程中遇到ajax跨越请求问题,导致status一直等于0,原来是这么写的: xmlhttp.open("GET", "http://192.168.118.129:8001/test_react_action?user_name=" + values.userName, true); xmlhttp.send(); 被解析为跨越访问了,这个时候需要在dva中添加代理才能

跨域AJAX请求的解决方案

同源策略 : http://www.cnblogs.com/chopper/archive/2012/03/24/2403945.html 在AJAX应用环境中,由于安全的原因,浏览器不允许XMLHttpRequest组件请求跨域资源.在很多情况下,这个限制给我来带来的诸多不 便.很多同行,研究了各种各样的解决方案: 1. 通过修改document.domain和隐藏的IFrame来实现跨域请求.这种方案可能是最简单的一种跨域请求的方案,但是它同样是一种限制最大的方 案.首先,它只能实现在同一个

jquery跨域访问解决方案

客户端“跨域访问”一直是一个头疼的问题,好在有jQuery帮忙,从jQuery-1.2以后跨域问题便迎刃而解.由于自己在项目中遇到跨域问题,借此机会对跨域问题来刨根问底,查阅了相关资料和自己的实践,算是解决了跨域问题.便记录下来,以供查阅.         jQuery.ajax()支持get方式的跨域,这其实是采用jsonp的方式来完成的.        真实案例:        $.ajax({             async:false,             url: 'http:

Javascript跨域访问解决方案

Javascript跨域访问解决方案 分类: WEB TIPS 2009-02-13 14:08 15882人阅读 评论(5) 收藏 举报 javascriptiframeservletcallbackdomainfunction 由于安全方面的考虑,Javascript被限制了跨域访问的能力,但是有时候我们希望能够做一些合理的跨域访问的事情,那么怎么办呢?这里分两类情况:一.基于同一父域的子域之间页面的访问:参见如下3个domain域:taobao.com.jipiao.taobao.com.