jquery – 与IE11的CORS请求

前端之家收集整理的这篇文章主要介绍了jquery – 与IE11的CORS请求前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我有一个CORS(跨源资源共享)请求,从我的登录页面到应用程序网站,在不同的URL.我有一个简单的页面我ping,以确定用户是否已经登录,如果是,重定向它们.否则我会显示登录页面.我使用jQuery

这在safari,chrome,firefox …而不是IE(自然)中非常出色.根据MS,IE 10及更高版本应该支持CORS requests with withCredentials

我正在使用jquery-2.0.3.min.js

任何想法为什么这不工作在IE11?

编辑:它似乎部分工作,因为它现在返回一个值“{”id“:false}.每次都发生这种情况,这意味着服务器从来没有获得凭据.我也在发布我的is_logged_in页面,我正在使用代码点燃器框架.

编辑:在IE的安全设置下启用“允许跨域的数据源”之后,我不再收到任何错误消息.

我收到的确切错误是:

SEC7118: XMLHttpRequest for 07001 required Cross Origin Resource Sharing (CORS).

$.ajax({
url: 'http://mysite.net/guest/is_logged_in',type: 'POST',crossDomain: true,xhrFields: {
       withCredentials: true
  },dataType: 'json',success: function(data) {

    if(data.id) {
        window.location.replace("http://mysite.net");
    }
}
});

public function is_logged_in()
{
    $allowed = array(
        'http://mysite.net','http://www.mysite.net','http://www.mysite.com',);

    $url = $_SERVER['HTTP_REFERER'];
    $url = substr($url,strpos($url,'/',8));
    if(isset($_SERVER['HTTP_ORIGIN']))
    {
        if(in_array($_SERVER['HTTP_ORIGIN'],$allowed))
        {
            $this->output->set_header('Access-Control-Allow-Origin: ' . $_SERVER['HTTP_ORIGIN']);
        }
    }
    else
    {
        if(in_array($url,$allowed))
        {
            $this->output->set_header('Access-Control-Allow-Origin: ' . $url);
        }
    }


    $this->output->set_header('Access-Control-Allow-Headers: X-Requested-With');
    $this->output->set_header('Access-Control-Allow-Credentials: true');
    $this->output->set_header("Access-Control-Expose-Headers: Access-Control-Allow-Origin");


    //TODO: Try to detect if this is an ajax request,and disallow it if not.

    $data = new stdClass();
    $this->load->library("ion_auth");
    if($this->ion_auth->logged_in())
    {
        $data->name = $this->ion_auth->user()->row()->first_name;
        $data->id = $this->ion_auth->get_user_id();
    } else {
        $data->id = false;
    }

    $this->output->set_output(json_encode($data));

}

提前致谢

解决方法

将“跨域访问数据源”的设置更改为“已启用”,将关闭IE中的跨域检查,并且可怕的不安全.相反,您需要确保目标第三方资源发送一个 valid P3P policy,表示它不会对用户的隐私做任何可怕的事情.

猜你在找的jQuery相关文章