Ajax CORS 替代方案

2024-01-12

我在 api.example.com 域上有一个 REST API 服务。并希望将此 api 也用于我在 www.example.com 上的 javascript ajax 请求。

我使用 CORS 构建 jQuery AJAX 请求(GET、POST、PUT 和 DELETE),并且在 Firefox 和 Chrome 上一切正常。我在 Opera 上测试了脚本,但没有加载任何内容。之后,我阅读了一些在线文章,并意识到 CORS 不适用于 Opera。

有哪些替代方案可以获取数据并将其放入 Rest 服务? JSONp 不起作用,因为我还需要其他 HTTP 动词(POST、PUT、DELETE)。

在同一域上创建“隧道”php 脚本?但是,我有更多的网络流量和服务器负载。

Client -> WWW-Server -> API-Server
API-Server -> WWW-Server -> Client

代替

Client -> API-Server
API-Server -> Client

我很感谢与我分享的每一个想法。


您可以使用第三方工具进行隧道传输,例如YQL http://developer.yahoo.com/yql/.

雅虎!查询语言是一种富有表现力的类似 SQL 的语言,可让您跨 Web 服务查询、过滤和连接数据。

YQL 将充当中间人,将来自您的站点的调用连接到您的 API。网络流量将如下所示:

Client -> YQL -> API Server

这对我来说看起来不错。

YQL 已经存在很长时间了。他们的免费配额 http://developer.yahoo.com/yql/guide/usage_info_limits.html是有利的,并且正常运行时间也相当不错:

  • 每个 IP 限制:/v1/public/:每小时 2,000 个呼叫; /v1/yql/:每小时 20,000 个呼叫。

  • YQL 的性能正常运行时间目标超过 99.5%。

此外,配额不断增加,Yahoo!提供了一定的保证,如果他们决定关闭该服务,他们将使其运行相当长的一段时间,以便您有时间进行迁移。目前有几个项目使用 YQL(我知道其中一项服务 -TipTheWb.org http://tiptheweb.org/)

此外,我建议您检测给定浏览器是否支持 CORS,并仅在必要时回退到 YQL:

function browserSupportsCors() {
    if ("withCredentials" in new XMLHttpRequest())
        return true; // most browsers
    else if (typeof XDomainRequest == "object")
        return true; // IE8+
    else // Opera currently here, but they'll get better pretty soon :)
    return false;
}

或者如果你使用 jQuery,它有一个简洁的support http://api.jquery.com/jQuery.support/ method.

if (!$.support.cors) {
    // YQL fallback
}

还有很棒的调整 YQL 性能的技巧 http://www.slideshare.net/cheilmann/using-yql-sensibly-yuiconf-2010.


感谢您对Opera用户的关心!

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Ajax CORS 替代方案 的相关文章

  • Snap.svg - 停止在可悬停元素的子元素上重新触发悬停事件

    对于一个项目 我使用的 SVG 形状由背景多边形和背景多边形上方的一些文本 我已将其转换为路径 组成 我正在使用 Snap svg 为我的形状设置动画 当我将鼠标悬停在多边形上时 形状应该缩放到特定尺寸 包括其中的所有内容 鼠标移开时 形状
  • 重定向并保留我的图标

    我想知道当您单击 facebook 上的链接时 facebook 重定向如何保留其 favicon 并使用 FB favicon 打开新选项卡 我想知道如何实现这一点 它不是 iframe 所以我怎么能做这样的事情 我应该从哪里开始 当重定
  • Angular - CSS - 自定义类型=文件输入,如何使用按钮而不是标签?

    我制作了一个类型为 file 的自定义输入字段 因为我不喜欢默认的输入字段 为了实现这一目标 我做了
  • 设置 cookie 时中断 JavaScript 执行

    当设置 cookie 时 是否可以始终中断浏览器开发人员工具中的 javascript 执行 无需显式设置 JS 断点 document cookie 在 html head 块的开头添加此代码片段效果很好
  • PHP 接口有属性吗?

    PHP 中的接口有属性 还是只有方法 您可以在 DocBlock 中为接口声明属性 然后 IDE 将提示接口的这些属性 PhpStorm 会这样做 但这不会强制在实现类中实际实现这些字段 例如 property string passwor
  • php - 解析html页面

    div divbox div p para1 p p para2 p p para3 p table class table tr td td tr table p para4 p p para5 p 有人可以告诉我如何解析这个 html
  • Firefox 不会在使用 jQuery AJAX 加载的内容上呈现 CSS 样式

    我有一个网站 允许用户对书籍和文章发表评论 主表单有一个搜索输入 用于查找相关书籍或文章 来源 我使用 jQuery 根据输入的搜索词从外部站点动态加载新源 然后还使用 AJAX 返回列表中的源 我有两个问题 现在 在用户输入四个字符后 j
  • 刷新页面时保存用户的选择

    我目前有一个页面显示不同团队的数据 我有一些数据 用户可以单击使其处于 打开 或 关闭 状态 并为每个数据显示不同的图标 它基本上就像一个清单 只是没有物理复选框 我想记住哪些 复选框 已被选中 即使在用户刷新页面或关闭浏览器并稍后返回之后
  • 为什么我们在打字稿中使用 HTMLInputElement ?

    我们为什么使用 document getElementById ipv as HTMLInputElement value 代替 document getElementById ipv value 功能getElementById返回具有类
  • DataTables row.add 到特定索引

    我正在替换这样的行项目 var targetRow entity row dataTable targetRow closest table dataTable DataTable dataTable row targetRow remov
  • Jquery一键提交多个同名表单

    我有动态创建的循环表单 我需要一键提交所有表单 我正在遵循下面的代码 你能建议我怎么做吗 谢谢
  • PHP session_regenerate_id 和黑莓浏览器

    问候 我正在开发一个登录系统 并陷入了黑莓浏览器身份验证的困境 他们似乎对 PHP 的 session regenerate id 有问题 有人可以建议替代方案吗 以下是身份验证和登录脚本 UPDATE看来会话一般都不起作用 拿出 sess
  • Firebase 函数 onWrite 未被调用

    我正在尝试使用 Firebase 函数实现一个触发器 该触发器会复制数据库中的一些数据 我想观看所有添加的内容votes user vote 结构为 我尝试的代码是 const functions require firebase func
  • 正则表达式 - 从 markdown 字符串中提取所有标题

    我在用灰质 https www npmjs com package gray matter 以便将文件系统中的 MD 文件解析为字符串 解析器产生的结果是这样的字符串 n Clean er ReactJS Code Conditional
  • PHP 表单 - 带验证蜜罐

    我有以下内容 效果很好 但对垃圾邮件机器人开放 我想放入蜜罐 而不是验证码 下面的代码适用于验证姓名 电子邮件 消息 但我无法让它与蜜罐一起工作 任何人都可以查看 蜜罐 代码并告诉我如何修复它吗 我希望表单给出 success2 不允许垃圾
  • 在本地 SDK 服务器上工作时,实时 Google App Engine 上出现 404

    我已经在GAE标准环境上部署了几个PHP应用程序 一切正常 现在我正在部署一个新应用程序 该应用程序位于由gcloudSDK按预期工作 终端命令 dev appserver py log level warning app yaml 问题是
  • Three.js 各种大小的粒子

    我是 Three js 的新手 正在尝试找出添加 1000 个粒子的最佳方法 每个粒子都有不同的大小和颜色 每个粒子的纹理是通过绘制画布创建的 通过使用粒子系统 所有粒子都具有相同的颜色和大小 为每个粒子创建一个粒子系统是非常低效的 有没有
  • 如何在 PHP 5.6 中通过 php.ini 设置“verify_peer_name=false”SSL 上下文选项

    案例 我想打开 SSL 连接localhost而 SSL 证书是 FQDN 的问题 问题 没有进行特殊处理就行 下面的程序失败并显示以下消息 PHP Warning stream socket enable crypto Peer cert
  • 如何使用 crypto-js 解密 AES ECB

    我正在尝试将加密数据从 flash 客户端 发送到服务器端的 javascript 在 asp 中作为 jscript 运行 有几个 javascript Aes 库 但它们实际上没有文档记录 我正在尝试使用 crypto js 但无法让代
  • 循环内的异步性

    我正在使用 jQuery getJSON 用于从一组实用程序的给定 URL 检索数据的 API 我真的很想找到一种为每个实用程序重用代码 完全相同 的方法 由于循环的执行与 ajax 调用无关 因此我无法找到保留循环值的方法 我知道这个描述

随机推荐

  • 实体框架核心:无法添加迁移:没有无参数构造函数

    我的数据项目参考 Entity Framework Core
  • 有效检测损坏的 jpeg 文件?

    有没有一种有效的方法来检测 jpeg 文件是否损坏 背景资料 解决方案需要在 php 脚本内工作jpeg 文件位于磁盘上无法手动检查 用户上传的数据 我知道imagecreatefromjpeg string filename 可以做到 但
  • Python ascii utf Unicode

    当我解析这个 XML 时p xml parsers expat ParserCreate
  • 使用 OAuth 时 Instagram 返回“未找到匹配代码或已使用”

    我正在尝试使用Instagram OAuth使用开发人员文档 https www instagram com developer authentication https www instagram com developer authen
  • 在元素后插入仅打开的 HTML 标签?

    我想在页面上的 H1 元素后面插入几个开始 DIV 标记 而不插入相应的结束标记 因为结束标记包含在我无权访问的包含页脚文件中 IE 现有代码 h1 Heading One h1 page content 新代码 h1 Heading On
  • Nginx 重写或内部重定向循环,同时内部重定向到“/index.html”

    我使用 Php 框架在 nginx 上实现 Web 服务器 没有任何 index html 网页工作正常 但某些脚本无法工作 它显示 500 内部服务器错误 这是服务器日志 2016 11 16 11 08 38 错误 2551 0 738
  • Google Play 应用内结算版本 3:因“已拥有的项目”而崩溃并缺少失败通知

    在 最终 发布 Google Play 应用内结算的 v2 实现之后 除了发布后的问题之外 我什么也没遇到 交易失败 崩溃 无法恢复 诸如 无法下载 您已经拥有该项目 之类的疯狂错误 以及各种其他荒谬的事情 老实说 我现在已经在 iOS A
  • MultipartFormDataStreamProvider 清理

    如果文件发布到我的网络应用程序 那么我通过以下方式读取它们MultipartFormDataStreamProvider FileData 我像这样初始化提供者 string root HttpContext Current Server
  • Spring Ldap - 多个基本名称

    我正在尝试使用 spring LDAP ODM 从 LDAP 接收一些属性 有没有办法在中配置多个基本名称
  • Sprintf 重复值

    这是一个简单的问题 我需要在 sprintf 函数中复制值 sprintf s s s arg1 arg1 arg2 我怎样才能只传递 arg1 一次 似乎无法在 php net 上找到答案 Thanks Andrew 使用索引格式 1 s
  • 如何通过代理连接不和谐机器人

    我正在尝试使用discord py 并通过代理运行discord 机器人 这关于此的不一致文档 https discordpy readthedocs io en latest api html highlight proxy discor
  • 如何从 VB6 .frx 文件中提取图像?

    我正在将一些 VB6 代码转换为 C VB6 将资源存储在 frx文件 与 C 存储它的方式相同 resx文件 如何将图像转换为 frx文件到可以嵌入的东西 resx file 这是部分答案 有一个实用程序可用于执行提取部分 Gfx来自Fr
  • Rails 中的 j 函数有什么作用?

    我刚刚发现一个博客提到jRails 中的函数 他们用它来进行 ajax 样式的页面更新 cart html 我知道他们正在使用部分来渲染cart部分 但有什么意义j 我发现一些文章说它将字符串转换为 JavaScript 可以接受的内容 但
  • 滚动视图中的线性布局不占据整个高度

    我有一个线性布局说V1 在L1内部我有一个滚动视图V2 在滚动视图内部我有另一个线性布局V3 现在V3有一个gridtview V4 PBM 是 如果我的列表视图有 6 个项目 则只有 2 个项目可见 对于其余的 即使我看到有足够的空白空间
  • 如何以非阻塞的方式组合可观察量?

    我有一个 Observables 集合 每个 Observables 检索不同的数据类型 我将这些 Observable 链接起来以获取页面所需的所有数据 事实上 所有这些信息都是独立的 因此加载一个信息不应阻止或干扰加载其他信息 这是我无
  • 查找两个网页之间的最短路径

    我需要找到两个维基百科页面之间的最短距离 以 跃点 为单位 我有一种方法可以提取页面上的所有内部 wiki 链接 我知道起始目的地和结束目的地 但我对如何从数据中提取跃点一无所知 到目前为止 我一直在使用链接提取方法来填充字典 其中键是页面
  • 最简单、简约、opengl 3.2 cocoa项目

    我已经使用旧版 openGL 和 cocoa 多年了 但现在我正在努力过渡到 openGL 3 2 互联网上有几个例子 但它们都太复杂了 许多甚至在 XCode 5 1 下不再编译 有人可以编写一个最简单 简约 最小的可可代码示例 只是为了
  • 如何使用 rjags / JAGS 的估计值来预测值

    设置模型并使用吉布斯采样对其进行训练后 我得到了所有隐藏值预测的结果 jags lt jags model example bug data data n chains 4 n adapt 100 update jags 1000 samp
  • 之间的用法差异。 a.out、.ELF、.EXE 和 .COFF

    请不要看问题标题误会我的意思 我知道它们是什么 可移植可执行文件的格式 但我的兴趣范围略有不同 我的困惑 我参与了最初来自第三方的重新托管 重定向应用程序 问题是 有时目标代码的格式也是 elf COFF 格式 但仍然显示 可执行且可链接
  • Ajax CORS 替代方案

    我在 api example com 域上有一个 REST API 服务 并希望将此 api 也用于我在 www example com 上的 javascript ajax 请求 我使用 CORS 构建 jQuery AJAX 请求 GE