如何允许跨源框架

时间:2017-06-10 19:22:07

标签: javascript php

我有2个域名。

我尝试使用window.open JavaScript代码打开域1中域2的URL,然后用户在域2上执行一些人员,然后使用window.opener将结果放在域1的div中 一切正常,但在最后一步,我在chrome控制台中给出了跨源框架错误Uncaught DOMException: Blocked a frame with origin "http://example.com" from accessing a cross-origin frame.

如何在域1上允许跨源框架?

修改

我的问题不是this question的可能重复,因为我问的是JavaScript窗口对象而不是HTML iframe标记,如果你对html和JavaScript有一点了解,你会理解这一点。

在打开php标签后,只需在代码的开头添加header("Access-Control-Allow-Origin: *");,这样就可以从任何来源(网站)进行访问。

如果您想限制访问权限,请将*替换为header("Access-Control-Allow-Origin: http://example.com/");

等来源(网站)网址

1 个答案:

答案 0 :(得分:0)

<?php
    // Allow from any origin
    if (isset($_SERVER['HTTP_ORIGIN'])) {
        header("Access-Control-Allow-Origin: {$_SERVER['HTTP_ORIGIN']}");
        header('Access-Control-Allow-Credentials: true');
        header('Access-Control-Max-Age: 86400');    // cache for 1 day
    }

    // Access-Control headers are received during OPTIONS requests
    if ($_SERVER['REQUEST_METHOD'] == 'OPTIONS') {

        if (isset($_SERVER['HTTP_ACCESS_CONTROL_REQUEST_METHOD']))
            header("Access-Control-Allow-Methods: GET, POST, OPTIONS");         

        if (isset($_SERVER['HTTP_ACCESS_CONTROL_REQUEST_HEADERS']))
            header("Access-Control-Allow-Headers:        {$_SERVER['HTTP_ACCESS_CONTROL_REQUEST_HEADERS']}");

        exit(0);
    }

?>