【问题标题】:CORS plugin chrome in ajaxajax中的CORS插件chrome
【发布时间】:2016-06-11 00:25:10
【问题描述】:

我正在使用 jquery 进行跨源 ajax 请求,我想像这样在请求中设置标头 - 但它说这是一个不正确的请求:

   $.ajax({
        url: address,
        headers:{
           'Access-Control-Allow-Origin': '*' 
         }
        success: function(result) {
            pipelineCallback(result, guid_key, j, missing_program);
        },
        error: function(result) {
            console.log(result);
        },
        async: true
    });

警告:当我不设置标头并使用此 CORS chrome 插件时,跨域请求可以正常执行...有什么问题?

插件链接(也有一个公共 github 仓库): https://chrome.google.com/webstore/detail/allow-control-allow-origi/nlfbmbojpeacfghkpbjhddihlkkiljbi?hl=en

【问题讨论】:

  • 如果可行,为什么还要添加标题?
  • 需要设置服务器使用header。
  • 服务器确实使用了标头——我是说我不想使用插件来设置请求的标头。我想在请求上手动设置标头。

标签: javascript jquery ajax cross-domain


【解决方案1】:

Access-Control-Allow-Origin响应 标头,而不是请求标头。

CORS 浏览器插件 fakes 将其添加到响应中。

请求添加非标准标头会触发a preflight OPTIONS request,这需要特定类型的响应来告诉浏览器可以使用非标准标头发出请求。

在响应中添加Allow-Control-Allow-Origin: *(这是浏览器插件所做的)不足以授予该权限。 (预检请求需要在响应中明确允许来源,而不是通配符)。

【讨论】:

  • 那么我可以在不使用 jquery 插件的情况下伪造这个吗?
  • @KonradS — 不会。这会使整个安全功能变得毫无意义。另一台服务器必须授予您的站点使用浏览器凭据从中读取数据的权限。您不能授予自己权限(尽管浏览器的所有者可以,正如您在插件中发现的那样,破解 浏览器 以禁用检查)。
猜你喜欢
  • 2017-04-18
  • 2012-08-29
  • 2018-04-15
  • 2017-04-18
  • 1970-01-01
  • 1970-01-01
  • 2014-12-11
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多