AJAX、子域和 SSL

2024-01-27

我有一个网站 foo.com,它向 bar.foo.com 发出 ajax 请求。这行得通吗?

另外,如果 foo 是安全连接 https,那么 bar.foo.com 也需要是 https 吗?这两个站点可以使用不同的证书吗?


使用纯 http AJAX:您正在谈论进行跨域 XMLHttpRequest,这是浏览器不允许的。有一个W3C 提案待决 https://wiki.mozilla.org/Cross_Site_XMLHttpRequest将来以安全的方式实现这一点(部分由IE8、IIRC实现),但目前绝对不可能。

然而,有一些解决方法可以安全地做到这一点:Subspace http://www2007.org/program/paper.php?id=801(它使用 iframe 和document.domain), the 片段识别技术 http://softwareas.com/cross-domain-communication-with-iframes(再次使用 iframe)和window.name技术 http://www.sitepen.com/blog/2008/07/22/windowname-transport/(再次强调,iframe!)。

就 SSL 而言,您可以为域和子域购买单独的证书,或者购买涵盖这两个域的单个通配符 (*.foo.com) 证书(当然,通配符证书会更昂贵)。

如果您有一个 HTTPS 页面请求来自其他域的项目,那么只要一切都是 HTTPS,一切都会很好。这意味着如果您使用 iframe 解决方法之一,则必须指定一个https://方案 URL 中srciframe 的属性。

最后一个效率较低的解决方法是在https://foo.com代理请求不安全http://bar.foo.com。 (这也解决了 XHR 跨域问题,因此您可以忽略其他解决方法。)当然,这意味着您将 XHR 请求发送到https://foo.com/someurl,然后就击中了http://bar.foo.com/someurl,接收响应并将其发送回浏览器,因此从性能角度来看,如果您有这种选择,最好将 bar.foo.com 的服务器端功能移至 foo.com 上。但如果您无法移动服务器脚本,那么代理就是可行的方法。

EDIT:在做了一些额外的测试并获得 iframe AJAX 解决方法(#fragmentidentifier 之一)以跨不同的 HTTPS 域工作后,我更改了最后 3 个 graf。你can使用iframe进行SSL跨域AJAX只要一切正常httpshttps方案用于 iframe 中src。总结:

  1. 简短回答:不,不允许真正的跨域 XHR
  2. 解决方法与 iframes:更高效,需要2个SSL 证书(或通配符证书),有点 复杂的
  3. 使用代理的解决方法: 效率较低,可以使用 1 或 2 SSL 证书(1 个通过 http 向 bar.foo.com 发出后端请求),有点复杂
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

AJAX、子域和 SSL 的相关文章

  • JavaScript 添加布尔值

    console log true true 2 console log typeof true true number console log isNaN true true false 为什么两个布尔类型相加会产生一个数字 我有点理解 如
  • .push() 将多个对象放入 JavaScript 数组中返回“未定义”

    当我将项目添加到beats数组然后console log用户时 我得到了数组中正确的项目数 但是当我检查 length 时 我总是得到 1 尝试调用索引总是会给我 未定义 如下所示 Tom beats 1 我想我错过了一些明显的东西 但这让
  • 如何使用有角度的材料创建卡片网格?

    我正在尝试使用 ng repeat 创建每行三张卡片的网格 我有一个普通的 javascript 对象数组附加到范围 下面的代码将为每张卡创建一个新行 div div
  • 如何在React Native Android中获取响应头?

    您好 我想在获取 POST 请求后获取响应标头 我尝试调试看看里面有什么response with console log response 我可以从以下位置获取响应机构responseData但我不知道如何获取标题 我想同时获得标题和正文
  • nodejs (libuv) 事件循环是否在一个阶段(队列)中执行所有回调,然后再进入下一阶段或以循环方式运行?

    我正在研究 Node js 中 libuv 提供的事件循环 我遇到了关注 Deepal Jayasekara 的博客 https blog insiderattack net event loop and the big picture n
  • 本地推送通知到在应用程序内运行 JS 代码的 Win8 Live Tile

    我正在尝试将更新发送到我的应用程序的磁贴 当应用程序运行时 这可以正常工作 例如 当用户单击按钮时 我可以轻松地将磁贴更新通知发送到磁贴 我无法解决的是当应用程序无法运行时如何更新磁贴 我找到的唯一选择是使用以下命令从远程 Web 服务器拉
  • JavaScript 继承;调用和原型

    要在Javascript中实现继承 通常需要执行以下两个步骤 假设我有一个基类 Animal var Animal function name this name name 我现在想从中派生一个子类 Dog 所以我想说 var Dog fu
  • 将 SSLSetEnabledCiphers 与 AFNetworking 结合使用来禁用弱密码

    我正在尝试禁用一些密码 弱 例如单个 DES 单个 DES 40 位等 我尝试过使用这段代码在 Cocoa 中使用 CFSocket CFStream 时如何设置 SSL 密码 https stackoverflow com questio
  • React Router v4 不渲染组件

    React Router v4 渲染组件存在问题 在应用程序初始加载时 它将呈现与 URL 相对应的正确组件 但是 任何后续的组件Link单击不会呈现所需的组件 图书馆 反应路由器 4 2 2 https reacttraining com
  • JavaScript推送函数中的动态变量

    我在 JavaScript 中使用推送功能 var chartData for var i 0 i lt 3 i chartData push date new Date year s mon s date s hr s min s sec
  • IE 中的 XPath 查询使用从零开始的索引,但 W3C 规范是从一开始的。我应该如何处理差异?

    问题 我正在转换目前仅适用于 Internet Explorer 的相对较大的 Javascript 代码 以便使其也适用于其他浏览器 由于代码广泛使用 XPath 我们做了一些兼容性功能以使事情变得更容易 function selectN
  • mongodb 聚合 - 累积字段的不同组值

    如果我有Player表格文件 name String score Int 我有Group文档 其中组代表玩家列表 groupName String players ObjectID 玩家可以属于多个组 我想做一个聚合Player文档 按以下
  • 如何始终将焦点保持在文本框中

    我创建了一个包含两个 div 的 HTML 页面 左侧的 div 页面的 90 是 ajax 结果的目标 右侧的 div 页面的 10 包含一个文本框 该页面的想法是在文本框中输入零件编号 通过条形码扫描仪 并显示与该零件编号匹配的绘图 显
  • 使用 Javascript 设置 cookie [重复]

    这个问题在这里已经有答案了 我正在尝试构建我的第一个移动应用程序 它需要连接到我的 mysql 数据库并使用 json 返回数据 这很好 目前我有一个登录系统 一旦确定用户名和密码存在 它就会返回一条成功消息 对于下一步 我想在我的页面上使
  • 使用javascript动态更新css内容

    需要将 css 更新为动态值 我不确定最好的方法是什么 div style zoom 1 div 缩放级别将根据窗口大小调整触发 应用程序将相应缩放 我将此应用程序加载到 cordova 中并让它在 iPAD 中运行 然后我意识到需要使用
  • 使用 Enzyme 测试 `React.createRef` api

    我想测试下面的类 它使用React createRef api 不过 快速搜索并没有发现任何这样做的例子 有人成功过吗 我该如何嘲笑裁判 理想情况下我想使用shallow class Main extends React Component
  • react-native - 图像需要来自 JSON 的本地路径

    你好社区 我正在react native中开发一个测试应用程序 并尝试从本地存储位置获取图像 我实际在做什么 我将图像直接链接源提供给 var 并在渲染函数中调用此方法 react 0 14 8 react native 0 23 1 np
  • 在 iOS 7 Safari 中,如何区分通过边缘滑动与后退/前进按钮的 popstate 事件?

    在 iOS 7 Safari 中 现在有两种后退 前进导航方式 使用底部的传统后退 前进按钮箭头或从屏幕边缘滑动 我正在使用动画在 ajax 应用程序中的页面之间进行转换 但如果用户通过边缘滑动进行导航 我不想触发该转换 因为这本身就是一个
  • 将数组从 jquery ajax 传递到代码后面

    我必须将二维数组传递给在asp net网页代码后面编写的页面方法我有一个变量objList作为二维数组 我使用以下代码来实现此目的 但没有成功 并且未调用页面方法 脚本语言 function BindTable objList ajax u
  • 没有输入的 jQuery 日期选择器

    我有一个相当复杂的网络应用程序 我想向其中添加一些日期选择 UI 我遇到的问题是我无法从文档中弄清楚如何真正控制日期选择器的出现方式和时间 不涉及任何表单元素 不 我不会添加秘密表单字段 因此简单的开箱即用方法根本行不通 我希望有人可以提供

随机推荐

  • 为什么堆栈的深度使用会导致简单解释器的超线性时间行为?

    type Expr Lit of int Add of Expr Expr let rec intr function Lit as x gt x Add Lit a Lit b gt Lit lt a b Add a b gt intr
  • 为什么使用整型变量会抛出异常?

    我遇到过以下两个代码 为什么它不抛出浮点异常 而在其他情况下它将抛出运行时异常 class FloatingPoint public static void main String args float a 1000f float b a
  • 当“pop”元素同时“for”循环列表时发生了什么[重复]

    这个问题在这里已经有答案了 Code arr i for i in xrange 10 for i in arr if i in arr print i arr pop 0 print arr 和输出 python2 7 ts py 0 2
  • Android通知大图标,有没有办法去掉右下角的小图标?

    我有一条显示大图标的通知 有什么方法可以从此视图中删除蜂窝及以上设备中的较小图标 显然还是保留了顶部状态栏的小图标 NotificationCompat Builder builder new NotificationCompat Buil
  • 如何格式化Swagger 2.0文本描述?

    我想格式化我的 Swagger API 描述 以便它们不是简单的文本段落 最好 我想添加一张小桌子 我在 Swagger 描述中没有找到有关文本格式的在线参考 如果我启动招摇编辑器 http editor swagger io 然后打开 I
  • 如何创建动态过滤器?

    我有一张装有设备的桌子 每个设备都有维护级别的日期 用户可以选择维护级别 因此 我应该针对所选维护级别的每个组合调整我的 SQLAlchemy 例如 SELECT WHERE equipment IN AND m level1 DATE A
  • 如何解决“资源要求请求启用 CORS…资源已被阻止,因为无法强制执行完整性”错误

    我在项目中使用引导图标 这给了我错误 子资源完整性 资源 http maxcdn bootstrapcdn com bootstrap 3 3 6 css bootstrap min css http maxcdn bootstrapcdn
  • 生成加起来等于某个数字的所有唯一数字组合

    我正在编写一个程序来尝试解决数学问题 我需要生成一个唯一的列表 其中包含所有与另一个数字相加的数字 例如 所有 4 个数字加起来为 5 的唯一组合是 5 0 0 0 4 1 0 0 3 2 0 0 3 1 1 0 2 2 1 0 2 1 1
  • 程序控制流程未按预期工作

    这是一个问题C 程序控制流程不符合预期 它要求输入字符 in 但未能要求输入字符 x int foo int main int argc const char argv foo return 0 int foo char in char x
  • 如何覆盖odoo new api中字段的默认函数

    我有一个调用函数来获取默认值的字段 在模块project forecast中 def default user id self return self env user if default user id not in self env
  • 如何从Python中的十六进制字符串中删除'\x'?

    我正在读一本wavPython 中的音频文件使用wave模块 这readframe 该库中的函数以十六进制字符串形式返回帧 我想删除 x这个字符串的 但是translate 功能无法按我想要的方式工作 gt gt gt input wave
  • Keras 中预测的流输出

    我在 Keras 中有一个 LSTM 我正在训练它来预测时间序列数据 我希望网络在每个时间步上输出预测 因为它将每 15 秒收到一个新输入 所以我正在努力解决的是训练它的正确方法 以便它在接收 x 0 x 1 x t 作为输入流时将输出 h
  • Javac 调试打开和关闭之间有性能差异吗?

    如果我打开使用 Javac 生成调试信息 则类文件会增大 20 25 这对运行 Java 程序有任何性能影响吗 如果是的话 什么条件以及多少 我预计对加载类会有一点影响 因为文件较大 但这应该是最小的 在任何语言中 调试信息都是元信息 它本
  • 如何将 HTML 转换为 XHTML? [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我需要将 HTML 文档转换为有效的 XML 最好是 XHTML 最好的方法是什么 有人知道工具包 库 样本 任何可以帮助我完成任务的东西
  • 每次查询后关闭 MySQL 连接

    在挖掘一位我敬佩的前同事整理的一些旧代码时 我注意到每次查询后他们都会关闭 MySQL 服务器的连接 这看起来有点奇怪 因为我总是在页面末尾关闭它 并且看到大多数人都这样做 那么问题来了 这是 PHP MySQL 中最好的想法吗 无论如何
  • 使用 Bash 获取一对 HTML 标签之间的内容

    我需要使用 bash 脚本获取一对给定标签之间的 HTML 内容 作为示例 具有以下 HTML 代码 text div text2 div text3 div div 使用 bash 命令 脚本 给定body标签 我们会得到 text di
  • 在 Windows 上分配开始失败之前检测内存运行不足

    我们有一个应用程序可能会分配大量小对象 取决于用户输入 有时应用程序会耗尽内存并导致崩溃 然而 如果我们知道内存分配变得紧张 那么一些优先级较低的对象可能会被销毁 从而允许我们优雅地降低用户结果 在调用 new 实际失败之前检测进程内存不足
  • 从 Metro 应用程序检测桌面可用性(检测 ARM、检测 Windows RT 系统)

    这是一个相关的问题在 WinRT Metro 应用程序 C 中获取操作系统版本 https stackoverflow com questions 10125324 get os version in winrt metro app c s
  • 如何在c#中从arraylist中检索对象

    如何在 C 中从 arraylist 中检索对象及其成员 你的意思是这样吗 ArrayList list new ArrayList YourObject myObject new YourObject list Add myObject
  • AJAX、子域和 SSL

    我有一个网站 foo com 它向 bar foo com 发出 ajax 请求 这行得通吗 另外 如果 foo 是安全连接 https 那么 bar foo com 也需要是 https 吗 这两个站点可以使用不同的证书吗 使用纯 htt