从另一个域运行Javascript函数

从另一个域运行Javascript函数,javascript,cors,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) {

从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的控制台消息(我在谷歌上搜索了一下,这对我来说毫无意义)

所有的代码都在站点B上。我想在调用这个js文件时运行一个php脚本,然后在站点a上以javascript的形式输出数据。因此,我的php脚本将完成所有的身份验证,并构造新的js代码,并将其回显出来

我缺少什么使CORS正常工作


提前感谢。

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

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

好的,所以终于有一些代码可以为我工作了。这就是我所做的

在站点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

还修改了站点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()


希望这对其他人有所帮助

好吧,最后我得到了一些代码。这就是我所做的

在站点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

还修改了站点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()


希望这对其他人有所帮助

您同时控制站点A和站点B吗?或者其中一个是第三方站点?我只控制站点b。但我可以在站点AIn中包含js,在这种情况下,您应该能够在站点B中添加标题。您同时控制站点A和站点B吗?或者其中一个是第三方站点?我只控制站点b。但我可以在站点AIn中包含js,在这种情况下,您应该能够在站点B中添加标题。