当前位置: 首页 > 知识库问答 >
问题:

Internet Explorer 11是否未在CORS请求中添加源标题?

栾耀
2023-03-14

我的问题取决于几个我认为正确的假设。

浏览器要求将源站标题放在CORS(跨源站资源共享)请求上。

维基百科:

要启动跨源请求,浏览器发送带有Origin HTTP标头的请求。

HTML5岩石:

首先要注意的是,有效的CORS请求总是包含Origin标头。这个Origin头是由浏览器添加的,不能由用户控制。

W3:

如果请求URL来源与原始URL来源不同,请将源来源设置为全局唯一标识符[…]。

看到caniuse.com和使用谷歌为一对夫妇数百不同种类的来源声称支持。

使用不同端口号的资源被视为来自不同的来源:

维基百科

当且仅当所有这些值完全相同时,两个资源被视为具有相同的来源。[…]故障-相同的协议和主机,但不同的端口。

Mozilla开发者网络

如果两个页面的协议、端口(如果指定了一个)和主机相同,则两个页面具有相同的原点。

Internet Explorer 11不发送Origin标头时,向相同的域"localhost"但使用不同的端口(从8411到8080)发出CORS请求。Opera、FireFox和Chrome发送Origin标头。然而,每个人都说CORS在Internet Explorer 10中得到支持?

共有2个答案

邓欣德
2023-03-14

我只是碰巧在微软的一个相关网站上发现了一个报告的bug,它清楚地描述了我的问题。微软员工很快得出结论:

没有足够的信息来重现你正在观察的行为。

自从他们的第一次评论和第一次尝试(?)以来,他们实际上已经在不同的端口上运行了两个不同的web服务器,并重现了这个问题。微软的最新评论称,他们“考虑在未来进行修复”。

经炜
2023-03-14

Internet Explorer对“同一来源”的定义与其他浏览器不同。请参阅MDN文档中关于同一原产地政策的IE例外部分:

对于同源策略,Internet Explorer有两个主要例外:

  • 信任区域:如果两个域都位于高度信任区域(例如,公司域),则不应用相同来源限制
  • 端口:IE不将端口包含在相同的源组件中,因此http://company.com:81/index.html 和http://company.com/index.html 来自同一来源,不受任何限制

因此,如果您的跨源请求发生在不同的端口或IE的一个受信任区域内,IE将不会将该请求视为跨源请求,并且不需要添加origin:标头。

 类似资料:
  • 我使用的是Swagger 2.0和Swagger UI 3.0.3。 在我的api_定义中。yaml在我的路径之前有以下内容: 这将在Swagger UI中添加一个授权按钮,用户可以在其中粘贴他们的API密钥。我希望此API密钥在每个请求的请求标头中发送。但这不会发生,我不确定为什么。我错过了什么吗? 编辑: 请求似乎发出了,我回来了。 Chrome开发工具显示以下请求头: 我有路径设置为: 定义

  • 问题内容: 我已经开发了一个Restfull应用程序,我想添加另一个Web应用程序来使用其服务,因此我进行了以下Ajax调用: 我得到这个例外: 对象{readyState:0,状态:0,statusText:“ SyntaxError:无法执行’setRequestHeader’…-Origin: ‘不是有效的HTTP标头字段名称。”}错误DOMException:无法在’XMLHttpRequ

  • 我已经在标题中添加了CORS,但我仍然在请求中得到CORS问题。在头中添加和处理CORS和其他请求的正确方法是什么? 以下是服务文件代码: 错误: 对preflight请求的响应未通过访问控制检查:请求的资源上没有“access-control-allow-origin”标头。因此,不允许访问源“http://localhost:4200” 失败:(未知url)的Http失败响应:0未知错误 在我

  • 我试图创建一个html文件,同步数据从一个pouchDb到couchDb..但是iam在chrome控制台得到以下错误。 选项http://localhost:5984/todos/No“Access-Control-Allow-Origin”标头存在于请求的资源上。因此,不允许访问源'http://localhost:8080'。XMLHttpRequest无法加载http://localhos

  • 问题内容: 我们正在将AJAX请求发布到本地运行的服务器,即 该javascript正在执行的页面也从localhost:9000提供服务,即,这完全像一个同源请求。 但是,由于某种原因,Google Chrome总是在结果请求中设置Origin标头,从而导致我们的服务器基于错误的假设(即CORS请求)阻止该请求。 在Firefox中不会发生这种情况。 此外,Firefox和Chrome均未发送O

  • 我使用AJAX请求通过POST将数据发送到另一个域。因为我的内容类型不是标准的(它是JSON格式),所以需要一个飞行前请求。(使用请求方法:选项) 如维基百科跨域XHR调用图表中所述 我想知道这是否很费时,因为浏览器将必须到达服务器两次或不?也许这取决于每个浏览器的行为? 通过使用内容类型“纯文本”来避免飞行前请求,我是否获得了一些时间?