强制Safari在jQuery GET请求中包含Origin标头

abr*_*ham 6 javascript safari ajax jquery cross-domain

https://app.example.com我提出以下要求:

$.get('https://api.example.com', { foo: 'bar' })
  .success(getSuccess)
  .error(getError);
Run Code Online (Sandbox Code Playgroud)

它适用于Chrome和Firefox,但不适用于Safari.Safari不执行预检OPTIONS请求或包含Origin: https://app.example.com标头,因此服务器不会返回Access-Control-Allow-Origin: https://app.example.com标头.

有没有办法强制Safari包含Origin标题或执行预检OPTIONS请求?

Var*_*ant 0

您可以向事件中的 HTTP XHR 请求添加标头beforeSend

就像是:

$.ajax({
  url: 'https://api.example.com',
  data: { foo: 'bar' },
  beforeSend: function(xhr) {
    xhr.setRequestHeader("Origin", "https://app.example.com");
}
})
.success(getSuccess)
.error(getError);
Run Code Online (Sandbox Code Playgroud)

  • `Origin` 是一个受限标头,无法通过 JavaScript 手动设置。 (5认同)