从另一个域运行Javascript函数

时间:2018-06-03 14:49:31

标签: javascript cors

首先,JS不是我强大的套件。我想要做的是在两个站点之间运行一些代码。例如,我们有站点A和站点B.

站点B包含一个名为auth.js的文件,其内容如下。

function  test() {
alert("bingo");
var xhttp = new XMLHttpRequest();
xhttp.onreadystatechange = function() {
    if (this.readyState == 4 && this.status == 200) {
        // document.getElementById("demo").innerHTML = this.responseText;
        alert( this.responseText );
    }
};
xhttp.open("POST", "https://siteb.com/auth.php", true);
xhttp.send();
};

现在在网站A中我包含auth.js并运行函数test()

到目前为止,我收到了警告信息,但是我收到了一条关于CORS的控制台消息(我用Google搜索了一下这对我来说没有意义)。

所有的代码都存在于网站B上。我想在调用这个js文件时运行一个php脚本,然后在网站A上以javascript的形式输出数据。所以我的php脚本将完成所有的操作验证和构造新的js代码并将其回显。

我错过了什么让CORS正常工作?

提前致谢。

2 个答案:

答案 0 :(得分:1)

好的,所以终于有了一些代码可以帮我。继承人我做了什么。

在站点B上的auth.php内部我添加了以下代码行。

header('Access-Control-Allow-Origin: *');
header('Access-Control-Allow-Methods: GET, POST');
header('Access-Control-Max-Age: 1000');
header('Access-Control-Allow-Headers: Content-Type, Authorization, X-Requested-With');

现在这允许所有流量通过。如果您想将其限制为特定域,请将*转换为http://example.com

并修改了Site B上的文件auth.js

function  test() {
alert("bingo");

$.ajax({
    type: 'POST',
    url: 'https://siteb.com/auth.php',
    crossDomain: true,
    data: {},
    async: false,
    success: function(response) {
        alert(response);
    },
    error: function (jqXHR, textStatus, errorThrown) {
        alert(errorThrown);
        alert(textStatus);
    }
});
};

所以现在现场A.我只打电话给test();

希望这有助于其他人

答案 1 :(得分:0)

创建一个PHP文件,它将在PHP CURL中发送请求,获取响应并将该响应发送到浏览器。不是将请求从Javascript发送到最终目标,而是将其发送到您自己的服务器并确保您的PHP正在执行。这应解决CORS问题。其他潜在的问题是你必须确保脚本,链接,a,img标签有正确的路径。