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

CORS和originheader?

辛承志
2023-03-14

当我们需要调用Ajax请求时,我们需要:

if(typeof XMLHttpRequest !== 'undefined') xhr = new XMLHttpRequest();
else
{
    var versions = ["Microsoft.XmlHttp",
            "MSXML2.XmlHttp",
            "MSXML2.XmlHttp.3.0",
            "MSXML2.XmlHttp.4.0",
            "MSXML2.XmlHttp.5.0"
    ];

我已经知道,使用XMLHttpRequest-2,我们可以发出一个跨源请求,并添加源标题。

问题:

>

  • 它是在浏览器(支持CORS)执行请求时添加的吗?(跨域还是非跨域?

我的意思是:他**是什么意思?

跨源HTTP请求有一个源标头。此标头向服务器提供请求的来源。此标头受浏览器保护,不能从应用程序代码更改。本质上,它是跨文档消息传递中使用的消息事件上的origin属性的网络等价物。原始标头与旧的referer[sic]标头的不同之处在于,referer是包含路径的完整URL。因为路径可能包含敏感信息,所以引用者有时不是由试图保护用户隐私的浏览器发送的。但是,必要时,浏览器将始终发送所需的源标题。

共有2个答案

万嘉石
2023-03-14

执行跨域请求时,会自动(通常)添加原始标头。

为了测试它,我打开了这个页面上的控制台,提出了两个不同的请求:一个请求另一个域,一个请求“/”,第一个请求添加了origin头。

顺便说一句,我正在使用JQuery,我真的建议您也使用它,以便在跨浏览器中具有相同的行为。

有关该主题的补充信息,请勾选:

首先要注意的是,一个有效的CORS请求总是包含一个Origin头。此原点标头由浏览器添加,用户无法控制。此标头的值是发起请求的方案(例如http)、域(例如bob.com)和端口(仅当它不是默认端口时才包括,例如81);例如:http://api.alice.com.

源报头的存在并不一定意味着请求是跨源请求。虽然所有跨源请求都将包含一个源标头,但一些相同的源请求也可能包含一个标头。例如,Firefox在同一来源请求中不包含来源标头。但Chrome和Safari在同一来源POST/PUT/DELETE请求中包含一个来源标头(同一来源GET请求将不包含来源标头)。

来源

公羊瀚
2023-03-14

何时添加此标题?

在页眉阶段,在发送文档正文之前(在打开之后,在发送之前)。

它是在浏览器(支持CORS)执行请求时添加的吗?(跨域还是非跨域?)

当原点与创建XMLHttpRequest的页面不匹配时,它会被添加,但也可能在同一原点请求中发送。

或者,当浏览器“看到”请求目标原点与当前原点不同时,它是否会自动添加。。。

但是,浏览器将始终在必要时发送所需的Origin标头。

这是XMLHttpRequest规范的一部分;如果您正在进行跨域请求,则在请求头中会发送一个额外的头。此标题是例如原点:http://www.stackoverflow.com并由标准浏览器附加,无需用户交互。

您可以在MozillaWiki的安全部分WHATWG和html5.org上阅读更多关于该规范的内容。据我所知,它是由FireFox和Google Chrome实现的。我还不相信它是W3C的一部分。此外,不要假设原点标头为真,因为它可以由修改过的borwsers或其他软件手动设置。

 类似资料:
  • 问题内容: 我的问题很简单,但我找不到答案,也没有自己进行测试的资源。我可以从一个域向另一个HTTPS域发出HTTPS CORS请求吗?我可以从一个域向另一个HTTPS域发出HTTP CORS请求吗?我知道,我可以执行从一个域到另一个HTTP域的HTTP CORS请求,但是当使用HTTPS时,我不知道是否存在任何区别。 谢谢, 菲利普 问题答案: 是的,您可以从一个HTTPS域向另一个HTTPS域

  • 问题内容: 我正在开发一个带有Rest接口和一个飞镖的Spring Boot应用程序。 XMLHttpRequest确实执行一个OPTIONS请求,该请求的处理完全正确。此后,发出最终的GET(“ / products”)请求,但请求失败: 所请求的资源上不存在“ Access-Control-Allow-Origin”标头。因此,不允许访问源’ http:// localhost:63343 ‘

  • 问题内容: 当我们需要调用Ajax请求时,我们要做的是: 我已经知道,使用,我们可以提出跨源请求 , 并且添加了ORIGIN标头。 题: 何时 添加此标头? 当浏览器(支持CORS)执行请求时是否添加?(跨域还是非跨域?) 还是在浏览器“看到”请求目标来源与当前来源不同时自动添加? 我的意思是:He **是什么意思? 跨域HTTP请求具有一个Origin头。该头为服务器提供请求的来源。此标头受浏览

  • 当我们使用axios客户机从节点服务器访问API时,它总是运行以下错误:

  • 我的REST API使用Spring会话和Spring Security性,但是当我通过一个简单的过滤器启用CORS时遇到了一个问题。 如果我通过http代理使用相对URI(映射http://xxxx/api 对于客户端应用程序中的/api),它运行良好。 如果我直接使用完整的URL,我在使用CORS时遇到了一个问题,它无法获取会话信息,下面是Spring Security日志 我正在使用Spri

  • 我正在开发一个带有Rest接口和前端dart的Spring Boot应用程序。 XMLHttpRequest确实执行了一个完全正确处理的选项请求。在此之后,发出最终的GET(“/products”)请求并失败: 所用版本:Spring Boot 1.3.0.m2 Spring 4.2.0.rc2 我错过了什么?