• 关于

    jsonp 跨域

    的搜索结果

回答

不仅仅是ajax,ajax只是异步通信方式,你用同步的方式也可以实现跨域。 所以和是不是ajax没毛线关系。 什么是跨域: 浏览器对于javascript的同源策略的限制,例如a.cn下面的js不能调用b.cn中的js,对象或数据(因为a.cn和b.cn是不同域),所以跨域就出现了. 上面提到的,同域的概念又是什么呢??? 简单的解释就是相同域名,端口相同,协议相同 jsonp: jsonp 全称是JSON with Padding,是为了解决跨域请求资源而产生的解决方案,是一种依靠开发人员创造出的一种非官方跨域数据交互协议。 一个是描述信息的格式,一个是信息传递双方约定的方法。 jsonp的产生: 1.AJAX直接请求普通文件存在跨域无权限访问的问题,不管是静态页面也好. 2.不过我们在调用js文件的时候又不受跨域影响,比如引入jquery框架的,或者是调用相片的时候 3.凡是拥有src这个属性的标签都可以跨域例如<script><img><iframe> 4.如果想通过纯web端跨域访问数据只有一种可能,那就是把远程服务器上的数据装进js格式的文件里. 5.而json又是一个轻量级的数据格式,还被js原生支持 6.为了便于客户端使用数据,逐渐形成了一种非正式传输协议,人们把它称作JSONP,该协议的一个要点就是允许用户传递一个callback 参数给服务端, demo1:基于script标签实现跨域 举个例子:我在http://study.cn/json/jsonp/jsonp_2.html下请求一个远程的js文件 不通域的请求 被请求的数据,远程js的代码 这样就实现跨域成功了,因为服务端返回数据时会将这个callback参数(message)作为函数名来包裹住JSON数据,这样客户端就可以随意定制自己的函数来自动处理返回数据了。 再写一个 Demo2: 基于script标签实现跨域 让远程js知道它应该调用的本地函数叫什么名字,只要服务端提供的js脚本是动态生成的就好了,这样前台只需要传一个callback参数过去告诉服务端,我需要XXX代码,于是服务端就会得到相应了. 例如 在http://study.cn/json/jsonp/jsonp_3.html页面请求 http://192.168.31.137/train/test/jsonpthree 上面说明了只要有src属性的都可以实现跨域请求,这个你应该清楚,当你引用某种js框架的时候不就是跨域了嘛,比如你引用谷歌juqery.js。 demo3:  基于jquery跨域 那么如何用jquery来实现我们的跨域呢???jquery已经把跨域封装到ajax上了,而且封装得非常的好,使用起来也特别方便 如果是一般的ajax请求: jsonp形式的ajax请求:并且通过get请求的方式传入参数,注意:跨域请求是只能是get请求不能使用post请求 jsonp 传递给请求处理程序或页面的,用以获得jsonp回调函数名的参数名(默认为:callback) jsonpCallback 自定义的jsonp回调函数名称,默认为jQuery自动生成的随机函数名 这里回调函数就是success 基本上就是这些了,还有iframe标签img标签,都可以,一个是描述信息的格式,一个是信息传递双方约定的方法。这个就算是跨域吧,跨域也就是只是一种格式。 答案来源网络,供参考,希望对您有帮助
问问小秘 2019-12-02 03:03:07 0 浏览量 回答数 0

问题

怎么捕获JSONP跨域请求的连接异常? 400 报错

怎么捕获JSONP跨域请求的连接异常? 400 报错 代码如下: function jsonpTest(){   var JSONP = document.createElement("scrip...
爱吃鱼的程序员 2020-06-04 16:30:21 1 浏览量 回答数 1

回答

服务端的跨域请求?  跨域请求不都是客户端的么? 我还第一次听说  ######这个和jfinal无关的,跨域请求一般可以用jsonp或者隐藏的iframe来实现。######跨域和你自己的后端无关,是你访问别人的站点,浏览器默认是不允许的,所以要想办法来变通实现,才有了用iframe,jsonp等方法来跨域。如果你写app,就没有跨域问题的。######就是我app端 发送jsonp请求服务端数据 框架是怎么处理的?
爱吃鱼的程序员 2020-06-04 17:55:18 0 浏览量 回答数 0

阿里云域名特惠专场,热门域名1元抢购!

全网低价特惠,顶级域名低至1元,更有96元/年服务器限时抢购!

回答

跨域这个问题不可能就纯前端解决问题的,肯定需要后台配合的,你想想如果跨域仅靠前端改点什么配置就搞定,那限制跨域还能保证安全性吗。1.CORS只需要后台配置一下响应头就可以,在开发环境下如果说服务器端这都不给配置,那还能愉快的合作开发么。2.JSONP不是没用,肯定有用,而且也是解决跨域的方法之一,但是也需要后台配合,需要修改返回给前台的数据内容,做成jsoncallback(fn)的形式,需要楼主自己搞清楚JSONP的原理才行。目前解决跨域的方法,主流就这两种。
小旋风柴进 2019-12-02 02:28:33 0 浏览量 回答数 0

问题

jquery跨域提交大数据量post请求

我在手机端有一个应用,需要向服务器端提交数据。默认只能是跨域请求了,可是jquery的jsonp跨域只能是get请求,因为get请求数据量有限制而且容易乱码。jsonp能不能执行post请求呢,或者有没有其它的方案,有过类似经典的没。这应用...
a123456678 2019-12-01 20:18:47 1191 浏览量 回答数 1

回答

通过jsonp跨域通过修改document.domain来跨子域使用window.name来进行跨域使用HTML5中新引进的window.postMessage方法来跨域传送数据使用CORS来跨域现在推荐通过CORS来跨域
steel1990 2019-12-02 01:46:09 0 浏览量 回答数 0

回答

1.jsonp 是用来解决跨域获取数据的一种解决方案,具体是通过动态创建 script 标签,然后通过标签的 src 属性获取 js 文件中的 js 脚本,该脚本的内容是一个函数调用,参数就是服务器返回的数据,为了处理这些返回的数据,需要事先在页面定义好回调函数,本质上使用的并不是 ajax 技术 2.优缺点 jsonp 优点: 完美解决在测试或者开发中获取不同域下的数据,用户传递一个 callback 参数给服务端,然后服务端返回数据时会将这个 callback 参数作为函数名来包裹住 JSON 数据,这样客户端就可以随意定制自己的函数来自动处理返回数据了。简单来说数据的格式没有发生很大变化 jsonp 缺点: 1.jsonp 只支持 get 请求而不支持 post 请求,也即是说如果想传给后台一个 json 格式的数据,此时问题就来了,浏览器会报一个 http 状态码 415 错误,告诉你请求格式不正确,这让我很蛋疼(在登录注册中需要给后台传一大串数据),如果都用参数的形式拼接在 url 后面的话不太现实,后台取值也会显得繁琐, 2.在登录模块中需要用到 session 来判断当前用户的登录状态,这时候由于是跨域的原因,前后台的取到的 session 是不一样的,那么就不能就行 session 来判断. 3.由于 jsonp 存在安全性问题(不知 qq 空间的跨域是怎么解决的,还是另有高招?),后来考虑到上面的一系列问题,采用的是后台进行设置允许跨域请求(但还是存在缺陷的,实质上还是跨域,如上面说的 session 问题).Header set Access-Control-Allow-Origin *为了防止 XSS 攻击我们的服务器, 我们可以限制域,比如 Access-Control-Allow-Origin: http://blog.csdn.net
茶什i 2019-12-02 03:21:43 0 浏览量 回答数 0

回答

ajax跨域请求浏览器是不允许的哦~ 当然你可以尝试使用 jQuery中 $.getJSON()方法加载其它网域的数据,具体操作请参见jquery API ######回复 @布谷鸟 : 可以跨域,就是利用jquery中的ajax函数就行,但是确实要设置jsonp类型.######回复 @索隆 : 嗯######回复 @布谷鸟 : getJSON方法能返回不是json的数据吗?貌似它只是能通过jsonp完成吧######回复 @索隆 : 谢嘛呀,凑巧会这会一点也不知道能不能帮到你######谢谢!!!!######ajax不能跨域######我如何才能进行跨域请求###### jsonp 跨于请求一般用的是 jsonp  还有iframe ######回复 @小囧 : 弄明白了,谢谢!!######回复 @小囧 : http://ditu.google.cn/maps/geo?q=china&output=csv我只想要获取它的经纬度信息######回复 @小囧 : 不行,那是别人的网站######可以丢后端服务器去处理不?######但是他是要服务端和客户端合作,但是我是要获取的一个第三方数据源,我对它不可控..怎么办?###### ajax不能跨域,你可以自己写一个后台,通过java跨域访问,然后将数据返回给自己的页面。 这样,你的页面只需要ajax请求自己项目的java方法,来得到其他网站的相关数据。
kun坤 2020-05-29 23:22:58 0 浏览量 回答数 0

回答

JSONP 是json用来跨域的一个东西。原理是通过script标签的跨域特性来绕过同源策略。 JSONP的简单实现:创建一个回调函数,然后在远程服务上调用这个函数并且将JSON数据作为参数传递,完成回调。
珍宝珠 2019-12-02 03:20:20 0 浏览量 回答数 0

回答

通过jsonp跨域通过修改document.domain来跨子域使用window.name来进行跨域使用HTML5中新引进的window.postMessage方法来跨域传送数据使用CORS来跨域
steel1990 2019-12-02 01:40:46 0 浏览量 回答数 0

回答

JS获取后端数据,通常,使用的是ajax技术。具体可以百度下js(或者jquery) ajax。ajax技术的优点是无页面刷新,通过后台接口获取数据。需要注意的是,一般而言,ajax是不支持跨域的。如果想要跨域访问后端数据,可以使用jsonp。而jsonp因为默认传输类型是get,所以不支持向后端传递大数据!
元芳啊 2019-12-02 00:54:59 0 浏览量 回答数 0

问题

jquery jsonp success不执行

今天在做一个需要类似 ajax 请求时,发现ajax 并不能跨域;然后查询了哈,发现网上jquery jsonp 插件可以,代码如下: $.jsonp({ url: urlss, success: function (data)...
a123456678 2019-12-01 20:22:43 1163 浏览量 回答数 1

问题

ajax跨域失败请求失败怎么提示用户?

我的ajax跨域是用的jquery jsonp实现的$.ajax({ url: 'http://192.168.11.139:8080/server/getUserJsonList.jsp', dataTyp...
a123456678 2019-12-01 20:19:08 894 浏览量 回答数 1

回答

1、JS跨域需要后端支持,常用的手段后端提供jsonp格式的接口适配,或者后端开启跨域请求头支持。 2、通过Nginx或后端代码,中转跨域请求。
mircode 2019-12-02 00:52:44 0 浏览量 回答数 0

回答

服务端调用不存在跨域,如果是浏览器端跨域获取数据,可以试试jsonp方式,再不行,可以试试通过本地来代理,将所有跨域请求改为请求本地,本地在通过nginx或者后台代码端代理出去
1322626827201727 2019-12-02 00:59:51 0 浏览量 回答数 0

问题

JSONP跨域请求结果获取 400 请求报错 

JSONP跨域请求,返回结果是 callback( {"error":100020,"error_description":"code is reused error"} ); ...
kun坤 2020-05-29 23:11:49 0 浏览量 回答数 1

回答

1、利用 JSONP 实现跨域调用2、使用 CORS 实现跨域调用
aoteman675 2019-12-02 01:40:46 0 浏览量 回答数 0

回答

你是不是跨域了。。。。。。。。。跨域的话用jsonp。######get  post?######楼主贴下请求源地址和目的地地址,看是否跨域。
爱吃鱼的程序员 2020-06-03 17:11:39 0 浏览量 回答数 0

问题

不支持jsonp 回调格式网站路径 请求问题

用js 有没有好的方式可以直接请求到这种不支持跨域及jsonp形式的网站接口数据 (不考虑后台请求方式)...
小旋风柴进 2019-12-01 20:27:57 751 浏览量 回答数 1

回答

是的,如果是跨域请求的话,服务器返回Json数据的格式也是不同的。所以服务器也是需要支持跨域的。如:服务器返回普通Json格式为(不跨域) { "code": "0", "content": "我是返回内容" } 那么Jsonp的返回格式则是(跨域) callback({ "code": "0", "content": "我是返回内容" })
蛮大人123 2019-12-02 02:18:10 0 浏览量 回答数 0

回答

跨域的问题,使用JSONP来解决 http://zh.wikipedia.org/zh-cn/JSONP,和你后端返回的是静态文件内容还是动态response没有关系。
杨冬芳 2019-12-02 02:46:55 0 浏览量 回答数 0

回答

跨域传递数据的情况下使用,和script一样,只是jsonp主要是数据,而且是动态创建的,格式一般是 回调函数名称(数据)这种格式,说白了jsonp就是一段可以执行的js代码
云栖技术 2019-12-02 02:31:37 0 浏览量 回答数 0

回答

优点 它不像 XMLHttpRequest 对象实现的 Ajax 请求那样受到同源策略的限制,JSONP 可以跨越同源策略; 它的兼容性更好,在更加古老的浏览器中都可以运行,不需要 XMLHttpRequest 或 ActiveX 的支持 在请求完毕后可以通过调用 callback 的方式回传结果。将回调方法的权限给了调用方。这个就相当于将 controller 层和 view 层终于分 开了。我提供的 jsonp 服务只提供纯服务的数据,至于提供服务以 后的页面渲染和后续 view 操作都由调用者来自己定义就好了。如果有两个页面需要渲染同一份数据,你们只需要有不同的渲染逻辑就可以了,逻辑都可以使用同 一个 jsonp 服务。 缺点 它只支持 GET 请求而不支持 POST 等其它类型的 HTTP 请求 它只支持跨域 HTTP 请求这种情况,不能解决不同域的两个页面之间如何进行JavaScript 调用的问题。 jsonp 在调用失败的时候不会返回各种 HTTP 状态码。 缺点是安全性。万一假如提供 jsonp 的服务存在页面注入漏洞,即它返回的 javascript 的内容被人控制的。那么结果是什么?所有调用这个 jsonp 的网站都会存在漏洞。于是无法把危险控制在一个域名下…所以在使用 jsonp 的时候必须要保证使用的 jsonp 服务必须是安全可信的
茶什i 2019-12-02 03:19:56 0 浏览量 回答数 0

问题

jFinal里 怎么处理跨域请求?? 400 报错

jFinal里 怎么处理跨域请求?? 400 报错 @JFinal 你好,想跟你请教个问题: jFinal里 怎么处理跨域请求?jsonp吗? 具体有没...
爱吃鱼的程序员 2020-06-04 15:56:14 1 浏览量 回答数 1

回答

发给自己的后台,中转一下.回复<aclass='referer'target='_blank'>@Jceee:别无他法,orz,这种方法对于我来说比较麻烦(因为这个服务器上的环境问题)有别的方法吗?这种情况属于跨域了。JSONP的方式应该没问题,CORS或许也是可以的。jsonp能解决跨域,这报错的问题是部分浏览器对这请求报错最后还是用服务器转发了,客户端解决不了。。。
爱吃鱼的程序员 2020-06-12 11:18:03 0 浏览量 回答数 0

问题

新手请教一个有关JSONP跨域的问题

请问一下,使用JSONP必须得有后台的支持吗?如果是不能修改的后台怎么办?比如调用微信的接口。自己写一段后台代码放在本地,再在这个文件中去调用远程接口?...
小旋风柴进 2019-12-01 20:26:29 835 浏览量 回答数 1

回答

您如果你是想跨域获得json数据,可以使用下面两种方案: 1、    Cname将自己的域名映射到OSS域名 2、    使用jsonp技术,实现跨域获取数据 如果你是跨域获取其他数据,使用Cname方案也是可以解决的。
聚小编 2019-12-02 01:05:12 0 浏览量 回答数 0

回答

方法一:可以用getJSON和ajax方法跨域,原理都是添加script标签生成jsonp回调函数方法二:设置document.domain还有N多种跨域方法,具体自行搜索
a123456678 2019-12-02 03:05:54 0 浏览量 回答数 0

回答

跨域是个⽐较古⽼的命题了,历史上跨域的实现⼿段有很多,我们现在主要介绍三种⽐较主流的跨域⽅案,其余的⽅案我们就不深⼊讨论了,因为使⽤场景很少,也没必要记这么多奇技淫巧。 最经典的跨域⽅案jsonp jsonp本质上是⼀个Hack,它利⽤ <script>标签不受同源策略限制的特性进⾏跨域操作。 jsonp优点: 实现简单 兼容性⾮常好 jsonp的缺点: 只⽀持get请求(因为 <script> 标签只能get) 有安全性问题,容易遭受xss攻击需要服务端配合jsonp进⾏⼀定程度的改造 jsonp的实现: function JSONP({ url, params, callbackKey, callback }) { // 在参数⾥制定 callback 的名字 params = params || {} params[callbackKey] = 'jsonpCallback' // 预留 callback window.jsonpCallback = callback // 拼接参数字符串 const paramKeys = Object.keys(params) const paramString = paramKeys .map(key => `${key}=${params[key]}`) .join('&') // 插⼊ DOM 元素 const script = document.createElement('script') script.setAttribute('src', `${url}?${paramString}`) document.body.appendChild(script) } JSONP({ url: 'http://s.weibo.com/ajax/jsonp/suggestion', params: { key: 'test', }, callbackKey: '_cb', callback(result) { console.log(result.data) } }) 最流⾏的跨域⽅案cors cors是⽬前主流的跨域解决⽅案,跨域资源共享(CORS) 是⼀种机制,它使⽤额外的 HTTP 头来告诉浏览器 让运⾏在⼀个 origin (domain) 上的Web应⽤被准许访问来⾃不同源服务器上的指定的资源。当⼀个资源从与该资源本身所在的服务器不同的域、协议或端⼝请求⼀个资源时,资源会发起⼀个跨域 HTTP 请求。 如果你⽤express,可以这样在后端设置 //CORS middleware var allowCrossDomain = function(req, res, next) { res.header('Access-Control-Allow-Origin', 'http://example.com'); res.header('Access-Control-Allow-Methods', 'GET,PUT,POST,DELETE'); res.header('Access-Control-Allow-Headers', 'Content-Type'); next(); } //... app.configure(function() { app.use(express.bodyParser()); app.use(express.cookieParser()); app.use(express.session({ secret: 'cool beans' })); app.use(express.methodOverride()); app.use(allowCrossDomain); app.use(app.router); app.use(express.static(__dirname + '/public')); }); 在⽣产环境中建议⽤成熟的开源中间件解决问题。 简单请求 以 Ajax 为例,当满足以下条件时,会触发简单请求 使用下列方法之一: GET HEAD POST Content-Type 的值仅限于下列三者之一: text/plain multipart/form-data application/x-www-form-urlencoded 请求中的任意 XMLHttpRequestUpload 对象均没有注册任何事件监听器; XMLHttpRequestUpload 对象可以使用 XMLHttpRequest.upload 属性访问。 复杂请求 那么很显然,不符合以上条件的请求就肯定是复杂请求了。 对于复杂请求来说,首先会发起一个预检请求,该请求是 option 方法的,通过该请求来知道服务端是否允许跨域请求。 对于预检请求来说,如果你使用过 Node 来设置 CORS 的话,可能会遇到过这么一个坑。 以下以 express 框架举例: app.use((req, res, next) => { res.header('Access-Control-Allow-Origin', '*') res.header('Access-Control-Allow-Methods', 'PUT, GET, POST, DELETE, OPTIONS') res.header( 'Access-Control-Allow-Headers', 'Origin, X-Requested-With, Content-Type, Accept, Authorization, Access-Control-Allow-Credentials' ) next() }) 该请求会验证你的 Authorization 字段,没有的话就会报错。 当前端发起了复杂请求后,你会发现就算你代码是正确的,返回结果也永远是报错的。因为预检请求也会进入回调中,也会触发 next 方法,因为预检请求并不包含 Authorization 字段,所以服务端会报错。 想解决这个问题很简单,只需要在回调中过滤 option 方法即可 res.statusCode = 204 res.setHeader('Content-Length', '0') res.end() 最⽅便的跨域⽅案Nginx nginx是⼀款极其强⼤的web服务器,其优点就是轻量级、启动快、⾼并发。 现在的新项⽬中nginx⼏乎是⾸选,我们⽤node或者java开发的服务通常都需要经过nginx的反向代理。 反向代理的原理很简单,即所有客户端的请求都必须先经过nginx的处理,nginx作为代理服务器再讲请求转发给node或者java服务,这样就规避了同源策略。 其它跨域⽅案 HTML5 XMLHttpRequest 有⼀个API,postMessage()⽅法允许来⾃不同源的脚本采⽤异步⽅式进⾏有限的通信, 可以实现跨⽂本档、多窗⼝、跨域消息传递。WebSocket 是⼀种双向通信协议,在建⽴连接之后,WebSocket 的 server 与 client 都能主动向对⽅发送或接收数 据,连接建⽴好了之后 client 与 server 之间的双向通信就与 HTTP ⽆关了,因此可以跨域。window.name + iframe:window.name属性值在不同的⻚⾯(甚⾄不同域名)加载后依旧存在,并且可以⽀持⾮常 ⻓的 name 值,我们可以利⽤这个特点进⾏跨域。location.hash + iframe:a.html欲与c.html跨域相互通信,通过中间⻚b.html来实现。 三个⻚⾯,不同域之间利⽤ iframe的location.hash传值,相同域之间直接js访问来通信。document.domain + iframe: 该⽅式只能⽤于⼆级域名相同的情况下,⽐如 a.test.com 和 b.test.com 适⽤于该⽅ 式,我们只需要给⻚⾯添加 document.domain ='test.com' 表示⼆级域名都相同就可以实现跨域,两个⻚⾯都通过js 强制设置document.domain为基础主域,就实现了同域。
前端问答 2019-12-23 12:52:12 0 浏览量 回答数 0

回答

JSONP 不可以跨域POST。要实现跨域post需要服务器支持。具体可以查看这篇文章,文章以tomcat为例,举例说明了如何在Http的头部中嵌入跨越相关的属性,从而实现跨域。http://www.tuicool.com/articles/euiuEv经过实战测试,这个方案是可行的。另外此前我也在GitHub上面看过一个开源的JS库,据介绍说不需要后台服务器的任何实现即可实现post的跨域。没有试过,不知道是不是真的可以。感兴趣的话可以找找看看。
a123456678 2019-12-02 03:08:09 0 浏览量 回答数 0

云产品推荐

上海奇点人才服务相关的云产品 小程序定制 上海微企信息技术相关的云产品 国内短信套餐包 ECS云服务器安全配置相关的云产品 开发者问答 阿里云建站 自然场景识别相关的云产品 万网 小程序开发制作 视频内容分析 视频集锦 代理记账服务 阿里云AIoT