是否有任何浏览器实现在ajax请求中使用Origin头中的完整url路径?

时间:2017-02-09 09:46:20

标签: browser xmlhttprequest

我正在谈论OPTIONS方法的CORS预检HTTP请求,该方法在实际请求之前由浏览器默认发送。在该请求中是否可以使Orgin标题包含完整的URL路径?

0   00000000
1   00000000
2   00000000
3   0000ffff
4   00000000
5   ffffffff
6   00000000
7   00000000
8   0000ffff
9   ffff0000

我希望我的页面在Origin标头中发送完整的URL。有没有办法欺骗浏览器这样做?

3 个答案:

答案 0 :(得分:1)

您始终可以使用以下内容在ajax参数上传递此值:

$.ajax(url, {
      fullOrigin: window.location.href
   }
)
像#Robby Cornelisse所说 - 大多数服务器都会使用此值保存REFERER服务器变量。

答案 1 :(得分:1)

浏览器将发送一个REFERER标头,其中包含您的AJAX请求的完整网址。

在下面的屏幕截图中,我只是使用控制台从此页面发送AJAX请求。请注意 Referer 标题。

Referer header

答案 2 :(得分:0)

不,这是不可能的。根据定义,Origin是URI的方案,域和端口部分。

一种选择是使用请求URI的查询部分将当前文档URI发送到服务器。您可以使用以下代码更改页面上每个跨源请求的URI:

window.addLocation = function( uri ) {
  var parser = document.createElement('a');
  parser.href = uri;
  var and = parser.search ? "&" : "";
  parser.search = parser.search + and + "madeBy=" + window.location;
  return parser.href;
};

var xhr = new XMLHttpRequest();
xhr.open( "GET", window.addLocation( originalUri ), true );

请注意,当前页面URI可能包含敏感信息,并且该浏览器通过URI(包括查询)识别HTTP缓存条目。

有关详细信息,请查看: