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

Browser 是否有任何浏览器实现在ajax请求中使用源标题中的完整url路径?,browser,xmlhttprequest,Browser,Xmlhttprequest,我说的是通过OPTIONS方法发出的CORS飞行前HTTP请求,默认情况下,浏览器会在实际请求之前发送该请求。在该请求中,是否可以使Orgin头包含完整的url路径 OPTIONS / HTTP/1.1 Host: example.com Origin: http://www.example.com/blah 我希望我的页面在源标题中发送完整的url。有什么方法可以欺骗浏览器这样做吗?您可以使用以下方法在ajax参数上传递此值: $.ajax(url, { fullOrigin

我说的是通过OPTIONS方法发出的CORS飞行前HTTP请求,默认情况下,浏览器会在实际请求之前发送该请求。在该请求中,是否可以使Orgin头包含完整的url路径

OPTIONS / HTTP/1.1  
Host: example.com
Origin: http://www.example.com/blah

我希望我的页面在源标题中发送完整的url。有什么方法可以欺骗浏览器这样做吗?

您可以使用以下方法在ajax参数上传递此值:

$.ajax(url, {
      fullOrigin: window.location.href
   }
)

正如Robby Cornelisse所说,大多数服务器都会使用此值保存REFERER server变量。

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

$.ajax(url, {
      fullOrigin: window.location.href
   }
)

正如Robby Cornelisse所说,大多数服务器都会使用此值保存REFERER server变量。

浏览器会发送一个
REFERER
头,其中包含AJAX请求的完整URL

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


浏览器将发送一个
REFERER
标题,其中包含AJAX请求的完整URL

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


不,这是不可能的。根据定义,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缓存条目

有关更多信息,请查看:

  • 关于MDN
  • 在HTTP 1.1规范中
  • 作者:jlong
  • 关于MDN

  • 不,这是不可能的。根据定义,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缓存条目

    有关更多信息,请查看:

    • 关于MDN
    • 在HTTP 1.1规范中
    • 作者:jlong
    • 关于MDN

    默认情况下不是发送了一个
    REFERER
    (sic)头吗?@RobbyCornelissen看到了新的描述。在我看来,这是不可能的。至于REFERER头,你不能依赖它。用户可以选择让浏览器不发送它(也可以禁止document.Referer),在许多其他情况下,它可能是空的,并且在支持Referer策略的浏览器中,作者还可以使Referer头为空,而不是
    Referer
    (原文如此)默认发送的标题?@RobbyCornelissen看到了新的描述。在我看来,这是不可能的。至于Referer标题,你不能依赖它。用户可以选择让他们的浏览器不发送它(也可以抑制document.Referer),在许多其他情况下,它可能为空,并且在支持Referer策略的浏览器中,作者还可以使Referer头为空,请参见新的描述。
    jQuery.ajax()中的第二个参数
    是设置对象。没有
    fullOrigin
    键,jQuery将忽略它及其值。有关更多信息,请参阅。请参阅新的说明。
    jQuery.ajax()
    中的第二个参数是设置对象。没有
    fullOrigin
    键,jQuery将忽略它及其值。有关详细信息,请参阅@t6chgeek我在发布前已注销。还是删除了它们。@t6chgeek我在发布前已注销。不管怎样,我还是把它们拿走了。