标题来源与主持人

use*_*344 19 header cross-domain

我对原产地和主人有疑问

我有一个ajax页面"Page A",它将调用ajax feed"Page B"

我看到来自ajax调用的"Page B"的请求标题来自"http://mydomain.com"并且主机"mydomain.com"

但是,如果我直接调用"Page B",请求标题只会有主机"mydomain.com"

因此,我想知道起源和主机之间有什么不同,以及为什么它出现在非直接呼叫上?

可以假装来源并传递给服务器吗?

mon*_*sur 47

主机是请求发送的域.引入此标头,因此托管站点可以在单个IP上包含多个域.

起源头是该请求源自的域.

始终包含Host标头.有时会包含Origin标头:它始终包含在跨源请求中(在所有浏览器中),在Chrome/Safari中,它也包含在同源PUT/POST/DELETE请求中.同源GET请求不包含Origin标头.

  • 答案的答案,与上面的参考链接相同,BTW可以来源假装并传递给服务器 (2认同)
  • Origin 不能从浏览器中伪造。用户可以使用 curl 来制作带有 Origin 标头的 HTTP 请求,但这不是典型的用例。不推荐使用 CORS 作为安全机制;如果您试图保护内容,您还应该有一些身份验证机制,例如 OAuth2。 (2认同)
  • 值得一提的是,某些浏览器(Chrome,Safari,也许是其他浏览器)确实在相同域请求的Ajax POST请求中包含Origin头(但不包括GET请求) (2认同)
  • @ user192344,是的,可以从浏览器“伪造”来源,但这样做涉及DNS攻击(请考虑DNS中毒/ DNS重新绑定)。基本上,我们破坏了浏览器下方的图层,因此认为它具有真实值。 (2认同)