当前位置: 首页 > 面试题库 >

跨域脚本问题和JSONP

东郭元魁
2023-03-14
问题内容

我们的客户要求我们为其站点提供Widgits。他们想链接到我们以获得Html和操纵Html并执行异步请求所需的jQuery。我知道存在跨域安全限制,可以防止这种情况的发生,但是通过使用JSONP作为数据传输格式可以缓解其中的一些限制。

我很难找到关于我要达到的目标的可能解释。有人可以帮我吗?


问题答案:

简而言之,所有AJAX请求(和跨窗口脚本)都应遵循Same Origin
Policy
。JSONP(带填充的JSON)不受相同来源政策的约束,因为它涉及将来自外部域的脚本添加到DOM,脚本本身包含对客户端上已经存在的已知函数的调用,JSON为函数调用的参数。

JSONP无法直接返回HTML或XML,但它可以传递包含HTML或XML数据字符串的对象,而该对象又可以添加到DOM或由客户端解析。

例如,JSONP可能返回:

jsonp_callback({"Errors":"none","Data":"<div id='externalWidget'>Hello!</div>"});

当将此脚本添加到页面时,该函数jsonp_callback将以JSON对象作为其参数执行。然后,该函数将HTML代码添加到页面中。

还有其他方式可以实现您想要的。例如,如果客户端不需要以任何方式处理数据,则可以通过HTML文档提供一个由客户端页面填充的小部件:

<iframe id="widget" src="http://mysite.com/widget/v1/" />

如果确实需要操纵数据,则将受到上述“同一个起源策略”的阻止。



 类似资料:
  • 平时被问到最多的问题还是关于跨域的,其实跨域问题真的不是一个很难解决的问题。这里我来简单总结一下我推荐的几种跨域解决方案。 我最推荐的也是我工作中在使用的方式就是: cors 全称为 Cross Origin Resource Sharing(跨域资源共享)。这种方案对于前端来说没有什么工作量,和正常发送请求写法上没有任何区别,工作量基本都在后端这里。每一次请求,浏览器必须先以 OPTIONS 请

  • 问题内容: 可以说,我有一个名为example.com的网站,在该网站上嵌入了iframe.net域的iframe,现在我想读取iframe的内容并传递一些参数以显示文本消息。像Hi和用户名一样。 现在的问题是,这无法在两者之间建立连接,甚至无法获得我使用以下方法使用的iframe的innerHTML 它将引发错误“权限被拒绝访问属性” 有谁知道如何在跨域平台中读写 问题答案: 如果您无法控制框架

  • 问题内容: 我正在尝试访问另一个域中的Web服务,但它不返回任何内容。后来我发现这是一个跨域访问的问题。 我在网上搜索了很多文章,但像我这样的新手都看不懂。:( 有人可以帮助我如何访问Web服务吗? 以下是我的代码。 问题答案: 浏览器不允许跨域AJAX调用。仅允许跨域JSONP请求。 要使用JSONP请求,您必须将属性更改为。但是,这意味着您不能请求XML,而只能请求JSONP。 关于JSONP

  • cors套件 https://github.com/evert0n/koa-cors https://github.com/expressjs/cors 使用nginx nginx 前端:moa-frontend public下面的采用nginx做反向代理 其他的采用express+jade精简代码(ajax与后端交互) 后端 server { listen 8

  • 问题内容: 可以说,我有一个名为example.com的网站,在该网站上嵌入了iframe.net域的iframe,现在我想读取iframe的内容并传递一些参数以显示文本消息。像Hi和用户名一样。 现在的问题是,这无法在两者之间建立连接,甚至无法获得我使用以下方法使用的iframe的innerHTML 它将引发错误“权限被拒绝访问属性” 有谁知道如何在跨域平台中读写 问题答案: 如果您无法控制框架

  • 本文向大家介绍JS跨域问题详解,包括了JS跨域问题详解的使用技巧和注意事项,需要的朋友参考一下 JavaScript是一种在Web开发中经常使用的前端动态脚本技术。在JavaScript中,有一个很重要的安全性限制,被称为“Same-Origin Policy”(同源策略)。这一策略对于JavaScript代码能够访问的页面内容做了很重要的限制,即JavaScript只能访问与包含它的文档在同一域