CORS尝试,php没有修改响应头

时间:2016-02-29 15:13:17

标签: php jquery ajax xmlhttprequest cors

我正在进行CORS尝试尝试自动完成功能,就像测试一样,从我的本地服务器到其他在线服务器。此服务器具有在我尝试访问的文件夹中配置的基本身份验证。所以我已经完成了ajax功能(我正在使用JQuery UI自动完成),我已经配置了php脚本给我一个JSON。一切都在同一台服务器上工作正常。

这就是我所做的:

$(function() {
      $( "#field" ).autocomplete({
        minLength: 1,
        source: function (request, response) {
          console.log(request.term);
          $.ajax({
            type: 'POST',
            url: url,
            data: {
              'idautor': 417,
              'lat': 43.56,
              'lon': -5.96,
              'etiqueta': request.term
            },
            crossDomain: true,
            dataType: 'json',
            beforeSend: function (xhr) {
              xhr.setRequestHeader ("Authorization", btoa(username + ":" + password));
            },
            success: function( data ) {
              response( $.map( data["pines"], function( item ) {
                return {
                  value: item["nombre"],
                  label: item["nombre"],
                  idsitio: item["idsitio"],
                  autor: item["autor"]
                }
              }));
            }
          }).then(function(data) {
            console.log('data', data);
          }, 
          function(err) {
            console.log('err', err);
          });
        },
        select: function (event, ui) {
          alert("El sitio con id "+ui.item.idsitio+" y autor "+ui.item.autor+" ha sido pulsado.");
        }
      })
    });  

问题是当我尝试从我的本地服务器使用它时,基本上我正在谈论的跨源HTTP请求我在浏览器控制台中收到以下错误:

  

XMLHttpRequest无法加载URL对预检请求的响应没有   传递访问控制检查:没有'Access-Control-Allow-Origin'标头   出现在请求的资源上。来源'http://localhost'是   因此不允许访问。响应具有HTTP状态代码401

所以我研究了这个主题,我找到了几个解决问题的方法。我试图将标题添加到php文件中:

header("Access-Control-Allow-Origin: *"); 
header("Access-Control-Allow-Credentials: true"); 
header("Access-Control-Allow-Methods: GET,POST,OPTIONS");
header("Access-Control-Allow-Headers: accept, authorization, content-type");  

还尝试将它们添加到我的.htaccess文件中,但根本没有成功。我仍然得到同样的错误。关于我缺少什么的任何线索?

以防万一,在发送请求时,这是我的XHR连接记录,在那里我看不到我在php中手动添加的新标题。

enter image description here 提前谢谢。

1 个答案:

答案 0 :(得分:0)

如果您需要CORS凭据,则您的AJAX请求需要withCredentials设置为true

Access-Control-Allow-Origin设置为*Access-Control-Allow-Credentials结合使用时也不起作用。 You will have to specify the exact domain.