繁体   English   中英

CORS(跨源资源共享)源验证失败

[英]CORS (Cross-Origin Resource Sharing) origin validation failure

最近我为客户做了一个网站。 收到它后,客户端将站点发送给 ac.netix 安全检查,这会带回此警报。

----ac.netix 警报 --- `Access-Control-Allow-Origin: https://www.example.com Access-Control-Allow-Credentials: true

接受任何来源(任意 Origin header 值反映在 Access-Control-Allow-Origin 响应标头中)。 对于 WordPress /wp-json/ 端点,这可能是

预期的行为并需要人工审查。 有关详细信息,请参阅下面“参考”部分中链接的 WordPress REST API 手册。` --- ac.netix 警报结束 ---

我终于找到了它的位置 - 在 rest-api.php

function rest_send_cors_headers( $value ) {
    $origin = get_http_origin();
    if ( $origin ) {
        // Requests from file:// and data: URLs send "Origin: null".
        if ( 'null' !== $origin ) {
            $origin = esc_url_raw( $origin );
        }
        header( 'Access-Control-Allow-Origin: ' . $origin );
        header( 'Access-Control-Allow-Methods: OPTIONS, GET, POST, PUT, PATCH, DELETE' );
        header( 'Access-Control-Allow-Credentials: true' );
        header( 'Vary: Origin', false );
    } elseif ( ! headers_sent() && 'GET' === $_SERVER['REQUEST_METHOD'] && ! is_user_logged_in() ) {
        header( 'Vary: Origin', false );
    }

    return $value;
}

谁能让我知道在这种情况下我该怎么办? 我该如何解决,或者我应该让它成为 wordpress 的解决方法。提前非常感谢。

function cors(){


        if (array_key_exists('HTTP_ORIGIN', $_SERVER)) {
            $origin = $_SERVER['HTTP_ORIGIN'];
        } else if (array_key_exists('HTTP_REFERER', $_SERVER)) {
            $origin = $_SERVER['HTTP_REFERER'];
        } else {
            $origin = $_SERVER['REMOTE_ADDR'];
        }
        $allowed_domains = array(
            'http://localhost:4200',
            'https://x.ir',
            'https://www.x.ir',
        );


        if (in_array($origin, $allowed_domains)) {
            header('Access-Control-Allow-Origin: ' . $origin);
        }

        header("Access-Control-Allow-Headers: Origin, X-API-KEY, X-Requested-With, Content-Type, Accept, Access-Control-Request-Method, Access-Control-Allow-Headers, Authorization, observe, enctype, Content-Length, X-Csrf-Token");
        header("Access-Control-Allow-Methods: GET, PUT, POST, DELETE, PATCH, OPTIONS");
        header("Access-Control-Allow-Credentials: true");
        header("Access-Control-Max-Age: 3600");
        header('content-type: application/json; charset=utf-8');
        $method = $_SERVER['REQUEST_METHOD'];
        if ($method == "OPTIONS") {
            header("HTTP/1.1 200 OK CORS");
            die();
        }


}


暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM