CORS - 是客户端、服务器端还是传输层? [复制]

2023-11-24

我试图理解CORS。根据我的理解,它使您能够限制哪些域可以访问服务器上的资源。然而,这似乎并不是故事的全部。例如,我有一个未启用 CORS 的 Web 服务。我无法通过 jQuery 从我的 Web 应用程序访问此 Web 服务(该应用程序在本地主机上运行)。不过,我可以通过 Postman 访问网络服务。所以,我有点困惑。是否有一些额外的客户端工作涉及 CORS?


服务器负责报告允许的来源。 Web 浏览器负责强制请求仅从允许的域发送。

CORS应用于请求时来源标头包含在请求中。这包括来自 JavaScript 的请求和 POST 请求。它没有应用所有资源。来源是发出请求的协议、主机和端口。 JavaScript 发出的请求使用加载 JavaScript 的源,而不是加载 JavaScript 的源。

当 CORS 未启用时,浏览器将依赖同源政策。同源策略仅适用于脚本。浏览器只允许从与加载的页面相同的源加载脚本。当未明确允许来源时,假定采用同源策略。

浏览器以外的 HTTP 客户端不会使用同源策略或 CORS。从这些其他 HTTP 客户端发出的请求没有来源。除非 Postman 桌面应用程序模拟浏览器,否则它将能够向任何 URL 发出请求。

需要 CORS 和同源策略,因为浏览器不会隐式信任其访问的网站向其他网站发出请求。它们不保护源站点,而是保护接收跨源请求的站点。这就是为什么允许的来源取决于目标服务器。

如果没有这些策略,重复加载网站的简单脚本可能会通过广告网络或脚本注入进行分发,然后加载该脚本的任何浏览器都会导致网站上的拒绝服务攻击。通过 CORS 和同源策略,浏览器将限制此脚本的影响。

CORS 提供的另一个重要保护是防止跨站请求伪造。它阻止一个站点向另一个站点发出某些类型的请求。这些请求将使用任何先前创建的令牌(例如会话令牌)发出。

CORS 举例:

Web 浏览器加载页面www.example.com。该页面包含一个脚本,该脚本发出请求www.example.org。请求的来源是www.example.com。浏览器要么发出请求,要么发送一个OPTIONS首先请求(预检请求)。当服务器在www.example.org收到来自其他来源的请求www.example.org它以响应标头进行响应Access-Control-Allow-Origin它告诉浏览器允许发出请求的来源。它还可能响应其他标头,例如Access-Control-Allow-Methods and Access-Control-Allow-Headers可以限制允许的请求类型。当浏览器被告知允许哪些来源时,它将阻止来自不允许的来源的未来请求。

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

CORS - 是客户端、服务器端还是传输层? [复制] 的相关文章

随机推荐

  • 跨站点将 DisplayFormatAttribute.ConvertEmptyStringToNull 的默认值设置为 false

    属性 DisplayFormatAttribute ConvertEmptyStringToNull 的默认值为 true 我想将整个站点的默认值设置为 false 或者按类或页面也可以 有没有办法可以做到这一点 这样我就不需要用以下内容装
  • Python 中带有字符串的 3D 散点图

    我尝试在 Python 中绘制 3D 散点图 其中 x 和 y 上有字符串类别 即神经网络的激活函数和求解器 z 轴上有浮点数 即 NN 的准确度分数 以下示例引发错误 ValueError 无法将字符串转换为浮点数 str1 我按照此文档
  • VueJS v-bind:背景图像的样式:url()

    根据VueJS docs div div 我尝试过几种模式 div div div div div div 但结果对于 HTML 无效style属性 有任何想法吗 尝试其他模式后 这是有效的模式
  • 使用 OCR 从图像文件读取文本的 API

    我正在寻找 Java 中 OCR 光学字符识别 的示例代码或 API 名称 使用它我可以从图像文件中提取所有文本 无需将其与我使用下面的代码所做的任何图像进行比较 public class OCRTest static String STR
  • 如何禁用 Django Celery 管理模块?

    我不需要 Django 管理中的 celery 模块 有什么办法可以将其删除吗 更具体地说 在admin py里面任何应用程序的INSTALLED APPS after djcelery from django contrib import
  • adb 在 Windows 上不被识别为内部或外部命令

    我设置了c android sdk tools路径环境和命令的路径 例如emulator工作得很好 但是adb命令仍然无法识别 我该怎么办 In the path系统变量我添加了android sdk路径和tools到目前为止的路径 还有什
  • 在 Node.js 中使用远程图像提供动态生成的 PDF

    我正在尝试创建一个节点服务器 使用以下命令即时生成 PDFPDFKit PDF 是根据 POST 请求的参数生成的 通过Express 其中一个参数指定图像 URL 服务器将下载该图像 URL 并将其注入到 PDF 中 现在 我有以下结构
  • 无法找到包 NETStandard.Library

    我尝试在 Visual studio 2019 中添加一个新的类库 Net Standard 但我得到这个错误信息 无法找到包 NETStandard Library 不存在任何软件包 此 id 来源 Microsoft Visual St
  • 将 JSON 字符串发布到 WEB API

    我有一个ASP NET WEB API 2需要有一个应用程序POST方法接受一个JOSN string结构未知javascript 我启用了cors and GET方法工作正常 但是发送时JSON从客户端 api 的方法参数始终是null
  • Mongoose Typescript 方式...?

    尝试在 Typescript 中实现 Mongoose 模型 搜索 Google 只发现了一种混合方法 结合 JS 和 TS 如果没有 JS 按照我相当幼稚的方法 如何实现 User 类呢 希望能够没有包袱的IUserModel impor
  • jQuery 打开按按钮选择

    如何通过按钮打开选择下拉菜单 button on click function select trigger click 我的代码 http jsfiddle net UGkWp UPDATE 我找到了针对 webkit 浏览器的解决方案
  • 传递到字典中的模型项的类型为“System.Data.Entity.DynamicProxies.Object”

    有谁知道为什么我会收到此错误 The model item passed into the dictionary is of type system Data Entity DynamicProxies Object 3E186F80358
  • java中的KeyPressed事件

    我刚刚创建了一个java tic tac toe 游戏 我想弄清楚在特定条件下按下回车键后如何运行一个方法 示例如下 if condition is met keyListener 根据您想要捕获 enter 键的位置 您可以使用Actio
  • 清除 Magento 缓存

    我正在使用 Magento 1 6 1 版 我需要以编程方式清除 Magento 缓存 Mage app gt getCache gt clean 我使用了上面的代码 但它没有清除缓存 try this Mage app gt cleanC
  • 如何正确更新我的图表值? (实时)

    我最近遇到了一个名为 LiveChart 的工具 并决定对其进行测试 不幸的是 我在弄清楚如何实时更新图表值时遇到了一些问题 我很确定有一种干净且正确的方法可以做到这一点 但我无法找到它 我希望能够通过更新值private void或按钮
  • ExtJs:在组合框中搜索/过滤

    我在 ExtJs 2 3 中遇到以下问题 我想在组合框中进行搜索 我给你举个例子 Ext comboData names Peter Paul Amanda var store new Ext data SimpleStore fields
  • surfaceView.getHolder 不返回 SurfaceHolder

    我正在尝试编写一个使用相机的应用程序 当尝试获取最终传递给启动相机的 surfaceCreated 的 surfaceHolder 时 我收到 NullPointerException getHolder 是否有返回NULL的情况 than
  • 如何连接 sparql 中的值列表?

    假设我有一个urihttp dbpedia org page Manmohan Singh现在他的标签 dbpprop years 中有一个年份列表 当我写一个查询时 PREFIX rdf
  • 在匿名方法中使用 MethodInfo.GetCurrentMethod()

    public static void Main string args Action a gt Console WriteLine MethodInfo GetCurrentMethod Name a 这段代码将返回一个模糊的字符串 如下所
  • CORS - 是客户端、服务器端还是传输层? [复制]

    这个问题在这里已经有答案了 我试图理解CORS 根据我的理解 它使您能够限制哪些域可以访问服务器上的资源 然而 这似乎并不是故事的全部 例如 我有一个未启用 CORS 的 Web 服务 我无法通过 jQuery 从我的 Web 应用程序访问