- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
最佳答案
ajax 调用是从客户端直接向服务器发出的实际 HTTP 请求。 Ajax 调用可以是同步的(阻塞直到它们完成)或异步的。由于同源安全保护,除非目标服务器明确允许使用 CORS 的跨源请求,否则只能对网页来自的同一服务器进行 ajax 调用。
JSONP 调用是使用 <script>
的一个有趣的技巧。允许跨源通信的标签。在 JSONP 调用中,客户端创建一个脚本标记并在其上放置一个带有 callback=xxxx
的 URL。查询参数就可以了。该脚本请求(通过脚本标签插入)由浏览器发送到外部服务器。浏览器只是认为它正在请求一些 javascript 代码。然后,服务器为此调用创建了一些特殊的 javascript,在该 javascript 返回时将由浏览器执行,服务器将函数调用置于 callback=xxxx
中命名的函数中。查询参数。通过将数据传递给该函数来定义变量,服务器可以将数据传送回客户端。对于 JSONP,客户端和服务器必须在 JSONP 调用如何工作以及如何定义数据方面进行合作。客户端无法对不明确支持 JSONP 的服务器进行 JSONP 调用,因为服务器必须构建完全正确类型的 JSONP 响应,否则它将无法工作。
因此,这两种通信方式的工作方式完全不同。只有 ajax 调用可以是同步的。按性质<script>
标签插入,JSONP 调用总是异步的。
在 Ajax 调用中,响应在 ajax 事件处理程序中返回。
在 JSONP 调用中,当返回的 Javascript 调用您的函数时会出现响应。
在某些方面,JSONP 是一个绕过跨域安全机制的安全漏洞。但是,您只能调用明确选择支持类似 JSONP 机制的服务器,因此如果服务器不希望您能够跨域调用它,它可以通过不支持 JSONP 来阻止它。您不能对这些其他服务器进行常规 ajax 调用。
浏览器制造商无法真正关闭这个漏洞,因为如果他们做了无数网页,就会破坏已经使用 JSONP 或从其他域加载脚本的网页。例如,Web 上使用 Google 或 Microsoft CDN 之外的 jQuery 的每个页面都会中断,因为不允许浏览器从跨域域下载 javascript。
JSONP 主要是作为一种能够发出跨域请求的变通方法而发明的。但是,由于 JSONP 需要明确的服务器支持才能工作,因此这并不是真正的安全问题,因为 JSONP 调用只能对明确决定允许这种类型的跨源调用的服务器进行。现在 JSONP 的使用比以前少得多,因为 CORS 被发明为一种更优雅的控制/允许方式。 CORS 代表 Cross Origin Resource Sharing它为目标服务器提供了一种方法,可以准确地告诉 Web 浏览器允许哪种类型的跨源请求,甚至可以告诉它哪些网页域可以发出此类请求。它具有比 JSONP 更精细的控制,并且所有现代浏览器现在都支持 CORS。
下面是一个跨域调用如何导致问题的示例。如果您可以从任何其他网页加载任意网页或进行任意 ajax 调用,那么假设您已经在其他浏览器窗口中登录到 Yahoo 上的网络邮件界面。这意味着您的 cookie 设置为允许来自您的浏览器的请求从 Yahoo 获取数据。如果允许其他网页中的 javascript 向 Yahoo 发出网络邮件请求(这将自动附加您的 cookie),那么它可以获取您的所有网络邮件数据并将其发送回它自己的站点。一个网站可以窃取任何其他网站的所有登录数据。所有的网络安全都会被破坏。
但是,按照我们今天的方式,只要 Yahoo 不支持使用相同 Web cookie 的 JSONP 接口(interface),它就可以避免未经授权的 JSONP 请求。
这里有一些关于跨域 ajax 的危险以及为什么必须防止它的其他好文章:
Why the cross-domain Ajax is a security concern?
Why Cross-Domain AJAX call is not allowed?
Why are cross-domain AJAX requests labelled as a "security risk"?
关于javascript - 我不明白 JSONP 与 AJAX 有何不同,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10289789/
有人有 Comet 应用程序 .net 的任何样本吗? 我需要一个示例如何在服务器中保持客户端的连接? 最佳答案 这里也有一些不错的: http://www.frozenmountain.com/we
我想知道是否有 Yii2 专家可以帮助我了解如何最好地使用 ajax 表单与 Yii ajax 验证相结合。我想我可以在不带您阅读我所有代码的情况下解释这个问题。 我正在处理一个促销代码输入表单,用户
已关闭。此问题不符合Stack Overflow guidelines 。目前不接受答案。 要求提供代码的问题必须表现出对所解决问题的最低限度的了解。包括尝试的解决方案、为什么它们不起作用以及预期结果
f:ajax 和 a4j:ajax 标记之间有什么显着差异吗? 我知道 Richfaces 4 中的 a4j:ajax 基于 native f:ajax JSF2 标记,添加了一些 f:ajax 中未
我已经尝试过这样但无法获取数组列表。它返回“null” var data=[]; data[0] = '1'; data[1] = '2'; $.ajax({
在教程中可以看到 jQuery.ajax 和 $.ajax 喜欢这里 http://www.thekludge.com/form-auto-save-with-jquery-serialize/ jQ
过度使用 AJAX 会影响性能吗?在大型 Web 应用程序的上下文中,您如何处理 AJAX 请求以控制异步请求? 最佳答案 过度使用任何东西都会降低性能;在必要时使用 AJAX 将提高性能,特别是如果
似乎我无法使用 Ext.Ajax.request 进行跨域 ajax 调用。看起来 ScriptTag: True 没有任何效果。 这是我的代码: {
我正在使用 Bottle 微框架(但我怀疑我的问题来自它) 首先,如果我定义了一个从/test_redirect 到/x 的简单重定向,它会起作用。所以 Bottle redirect() 在简单的情
任何人都可以指出各种 AJAX 库的统一比较吗?我已经阅读了大约十几种不同的书,我即将开始一个项目,但我对自己是否已经探索了可能性的空间没有信心。 请注意,我不是在要求“我认为 XXX 很棒”——我正
似乎使用 AJAX 的站点和应用程序正在迅速增长。使用 AJAX 的主要原因之一可能是增强用户体验。我担心的是,仅仅因为项目可以使用 AJAX,并不意味着它应该。 可能是为了 UX,AJAX 向站点/
假设我有一个可以通过 Javascript 自定义的“报告”页面。假设我有可以更改的 start_date、end_date 和类型(“简单”或“完整”)。现在 我希望地址栏始终包含当前(自定义) V
我一直在阅读 Ajax 并且希望从 stackoverflow 社区看到我是否正确理解所有内容。 因此,正常的客户端服务器交互是用户在 url 中拉出 Web 浏览器类型,并将 HTTP 请求发送到服
这可能有点牵强,但让我们假设我们需要它以这种方式工作: 我在服务器的 web 根目录中有一个 index.html 文件。该文件中的 javascript 需要向/secure/ajax.php 发出
关闭。这个问题是opinion-based .它目前不接受答案。 想改进这个问题?更新问题,以便 editing this post 可以用事实和引用来回答它. 去年关闭。 Improve this
我希望ajax post成功进入主页。由于某种原因,我一直做错事。知道我应该做什么来解决这个问题吗? window.APP_ROOT_URL = ""; Ajax $.ajax({ url: '#{a
我在 2 个不同的函数中有 2 个 ajax 调用。我想用.click来调用这2个函数。 func1 将数据插入数据库,然后 func2 检索数据,所以我的问题是如何等到 func1 完全完成然后只执
我试图在单击按钮后禁用该按钮。我尝试过: $("#ajaxStart").click(function() { $("#ajaxStart").attr("disabled", true);
我试图在每个 Ajax 请求上显示加载动画/微调器 我的 application.js $(document).on("turbolinks:load", function() { window.
我正在显示使用jQplot监视数据的图形。 为了刷新保存该图的div,我每5秒调用一次ajax调用(请参见下面的JavaScript摘录)。 在服务器上,PHP脚本从数据库中检索数据。 成功后,将在5
我是一名优秀的程序员,十分优秀!