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 的相关文章

  • ScrollTop 在 Chrome/Safari 中不起作用

    我的网站上有一个循环内的表单 当有人提交表单时 查询字符串会添加到 URL 中 例如 updated 111 然后 我的 JQuery 脚本检查数字的 url 并在提交表单并重新加载页面后滚动到该 div 该脚本在 Firefox 中运行良
  • javascript函数知道它的名字吗

    我有一个名为 getItem 的函数 我想使用其中的代码读取该函数的名称 这可能吗 function getItem var functionName how do I read the function name alert functi
  • Node.js Google-云存储上传目的地规范

    我有一个 Node js 服务器并且正在使用谷歌云上传一些图像文件的包Firebase 存储 上传本身工作正常 但 google cloud API 似乎只能将文件上传到 Firebase Storage 根文件夹 有没有办法指定远程位置来
  • 为什么我的箭头函数有原型属性?

    正如文档中提到的https developer mozilla org en docs Web JavaScript Reference Functions Arrow functions https developer mozilla o
  • 将其作为参数传递给 addEventListener()

    我想添加change一组复选框的事件 我如何访问this在我的事件函数中 这样当我执行事件时我可以访问复选框的值 这是我当前的代码 var checkboxes document getElementsByClassName cb Arra
  • React JS“this”没有按预期工作

    我有下面的代码 save function var this this console log this refs itemText this setState isEditing false function console log In
  • 使用 jQuery 更改 SVG 元素的“xlink:href”属性

    我正在尝试使用单击事件更改 xlink href 属性 到目前为止它部分有效 这就是我正在做的 HTML a href class ui btn ui corner all ui shadow editIcon style text ali
  • 根据数据更改图例颜色高图表

    我可以根据数据动态设置列的颜色 但无法弄清楚如何更改图例中的颜色 请注意 jsfiddle 最新的条形图是绿色的 但图例是蓝色的 有没有办法改变列颜色也会改变图例颜色 这是我用于列颜色的代码 jsfiddle http jsfiddle n
  • 谷歌浏览器如何启动桌面应用程序?

    我真的不知道术语 所以我将从一个例子开始 如果我点击磁力链接 Google Chrome 会询问我是否要启动 torrent 客户端 我单击 确定 chrome 启动该应用程序 该应用程序根据链接执行一些操作 现在有办法查看应用程序如何从
  • 单击时突出显示文本(javascript jquery html)

    当您在所有浏览器中双击某个单词时 它们会自动突出显示单击下的单词 但是否有可能找到一种方法exact单击一下就会发生同样的事情吗 我想这涉及到的事情可能是 TextRange 的东西 对所有段落 或整个正文或 div 的 onclick 做
  • 如何与使用 child_process.spawn 创建的新创建的服务器交互

    我正在尝试为我的私人托管的 反恐精英全球攻势 服务器制作一个前端 当我点击运行服务器时 在前端 一切正常 服务器启动并记录到控制台 但是如何查看服务器IP地址 服务器中的玩家等信息呢 这是我到目前为止运行服务器的内容 router post
  • Bootstrap 3 - 模态背景不会根据模态对话框的高度调整大小?

    我将一个表单放入模式中 并尝试在用户触发单选按钮时显示表单的一些隐藏字段 显示隐藏字段后 模态自动重新缩放的高度 但模态背景的高度不能用作模态对话框 我该如何解决它 div class modal fade div class modal
  • JavaScript 按名称获取当前作用域中的变量

    所以我有一个变量和该变量名称的字符串 function Factory string var foo bar console log foo is equal to this string 如果变量所在的对象是当前对象 如何从字符串文字中获
  • 限制线的长度

    我正在尝试画一条代表 弹弓 的线 并且希望它具有最大拉伸长度 在 p5 中 我在位置和位置之间画了一条线 line posA x posA y posB x posB y posA 是鼠标 x 和 y posB 是画布上圆的位置 我想要做的
  • onClick 事件适用于触摸屏设备上的触摸吗?

    我用过onclick我的网站上的活动 但是 当我在谷歌浏览器的开发人员模式移动视图中打开它时 触摸使用鼠标单击的元素没有任何反应 所以我的问题是 我还必须添加吗ontouch事件连同onclick事件或 onClick 事件适用于所有触摸屏
  • 检测图像是否损坏或损坏

    我需要以编程方式检查用户在我的应用程序上选择作为壁纸的图像是否已损坏或损坏 基本上我为用户提供了选择自己的图像作为壁纸的选项 现在 当图像加载时 我只想检查它是否已损坏 如果您正在寻找 PHP 解决方案而不是 javascript 解决方案
  • python 函数返回 javascript date.getTime()

    我正在尝试创建一个简单的 python 函数 它将返回与 javascript 相同的值new Date getTime 方法 如所写here http www w3schools com js js dates asp javascrip
  • 使用 MVC5、Ajax、C# 和 MSSQL Server 级联 DropdownList

    我对来自 Windows 窗体和三层架构的 MVC 非常陌生 我试图找出使用从数据库填充的级联下拉列表 DDL 我使用 MS SQL Server 2012 VS 2013 目前我正在研究用户调查问卷 用户可以从 DDL 的多个答案中进行选
  • javascript:获取带有单位的CSS prop值[重复]

    这个问题在这里已经有答案了 我的代码是这样的 image 1 position absolute top 3vw 我的尝试 http jsfiddle net z8k6t3fb 1 http jsfiddle net z8k6t3fb 1
  • 使用 Three.js 中的设备方向控件进行对象旋转

    我正在迈出使用 JavaScript 进行编码并使用 Three js 的第一步 我正在尝试 Threejs org 的这个例子 http trijs org examples misc controls deviceorientation

随机推荐

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

    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