duanfu3634 2016-02-05 19:36
浏览 997
已采纳

请求标头字段Access-Control-Allow-Headers在预检响应中不允许使用Access-Control-Allow-Headers

I am trying to make a login page from cross domain but I couldn't solve the problem, the error is:

XMLHttpRequest cannot load http://localhost/testing/resp.php. Request header field Access-Control-Allow-Headers is not allowed by Access-Control-Allow-Headers in preflight response.

My Javascript code is:

$('#login').click(function(){
        var username = $('#uname').val();
        var password = $('#pass').val();
        var result = $('.result');
        result.text('loading....');

        if (username != '' && password !=''){
            var urltopass = 'action=login&username='+username+'&password='+password;
            $.ajax({
                type: 'POST',
                data: urltopass,
                headers: {"Access-Control-Allow-Headers": "Content-Type"},
                url: 'http://localhost/testing/resp.php',
                crossDomain: true,
                cache: false,
                success: function(responseText){
                    console.log(responseText);
                    if(responseText== "0"){
                        result.text('incorrect login information');
                    } else if (responseText == "1"){
                        window.location="http://localhost/testing/home.php";
                    } else{
                        alert('error in sql query 
' + responseText);
                    }
                }
            });
        } else return false;
    });

The PHP code for http://localhost/testing/resp.php :

<?php
    include "db.php"; //Connecting to database

    if (!isset($_SERVER['HTTP_ORIGIN'])) {
        echo "This is not cross-domain request";
    exit;
}
    header("Access-Control-Allow-Origin: *");
    header("Access-Control-Allow-Credentials: true");
    header("Access-Control-Allow-Methods: POST, GET, OPTIONS");
    header("Access-Control-Allow-Headers: Content-Type, Authorization, X-Requested-With");
    header('P3P: CP="CAO PSA OUR"'); // Makes IE to support cookies
    header("Content-Type: application/json; charset=utf-8");

    if (isset($_POST['action']) && $_POST['action'] == 'login'){
        $uname = $_POST['username'];
        $pass = $_POST['password'];

        $sql = "SELECT * FROM loginajax WHERE username='$uname' AND password='$pass'";
    
        $rs=$conn->query($sql);

        if (mysqli_num_rows($rs) <= 0){
            echo "0";
        } else {
            echo "1";
        }
        
    } else echo "this is not Login";

?>

</div>
  • 写回答

1条回答 默认 最新

  • douci4026 2016-02-05 19:54
    关注

    remove this:

    headers: {"Access-Control-Allow-Headers": "Content-Type"},
    

    from your jQuery.ajax call.

    The server responds with a Access-Control-Allow-Headers header, the client doesn't send it to the server.

    The client sends a Access-Control-Request-Headers to request allowing certain headers, the server responds back with with a Access-Control-Allow-Headers that lists the actual headers its going to allow. The client does not get to demand what headers are allowed.

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥50 有数据,怎么建立模型求影响全要素生产率的因素
  • ¥50 有数据,怎么用matlab求全要素生产率
  • ¥15 TI的insta-spin例程
  • ¥15 完成下列问题完成下列问题
  • ¥15 C#算法问题, 不知道怎么处理这个数据的转换
  • ¥15 YoloV5 第三方库的版本对照问题
  • ¥15 请完成下列相关问题!
  • ¥15 drone 推送镜像时候 purge: true 推送完毕后没有删除对应的镜像,手动拷贝到服务器执行结果正确在样才能让指令自动执行成功删除对应镜像,如何解决?
  • ¥15 求daily translation(DT)偏差订正方法的代码
  • ¥15 js调用html页面需要隐藏某个按钮