2016-06-10 51 views
1

插件铬我使用jQuery,使跨起源Ajax请求,我想在像this--请求设置头,但它说,它是一个不正确的请求:CORS在阿贾克斯

$.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

+0

如果有效,为什么要添加标头呢? –

+0

您需要将服务器设置为使用标题。 –

+0

服务器确实使用标题 - 我说我不想使用插件在请求上设置标题。我想根据请求手动设置标题。 – KonradS

回答

4

Access-Control-Allow-Origin响应头,而不是一个请求报头。

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

添加非标头的要求触发a preflight OPTIONS request这需要一个特定的一种回应,告诉它是确定以使与非标头的请求的浏览器。

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

+0

所以我可以假装没有在jQuery中使用插件? – KonradS

+0

@KonradS - 不会。这会使整个安全功能变得毫无意义。其他服务器必须为您的站点授予使用浏览器凭据从中读取数据的权限。你不能允许自己的权限(虽然浏览器的所有者可以像你在插件中发现的一样,通过*浏览器*来禁用该检查)。 – Quentin