【问题标题】:Cross Domain From Javascript to PHP从 Javascript 到 PHP 的跨域
【发布时间】:2014-06-26 05:00:00
【问题描述】:

我必须从服务器 A 上的 javascript 向服务器 B 上的 php 文件发出请求。我可以访问两台服务器。

但是有些事情出了问题。我总是准备好状态 0,状态 0。

这是我尝试的最新方法:请指出我做错了什么。谢谢。

服务器 A:

$.ajax({
    type: "GET",
    url: 'http://server_B/request.php',
    data: form_data,
    dataType: 'json',
    success: function (resp) {
        alert("Successful");
        console.log("Response completed");
        console.log("resp is" + resp);
    },
    error: function (xhr, error) {
        console.log("readyState: " + xhr.readyState + "\nstatus: " + xhr.status);
        console.log("responseText: " + xhr.responseText);
        alert("Error occurred.");
    }
});

服务器 B:request.php

<?php
    header('Content-Type: application/json');
    header('Access-Control-Allow-Origin: '.$_SERVER['HTTP_ORIGIN']);
    header('Access-Control-Allow-Methods: GET, PUT, POST, DELETE, OPTIONS');
    header('Access-Control-Max-Age: 1000');
    header('Access-Control-Allow-Headers: Content-Type, Authorization, X-Requested-With');

    # do the work and save it on $result array.
    print json_encode($result,true);
?>

【问题讨论】:

  • 我对 jsnop 不熟悉,而且我在控制台上没有得到任何结果,所以要了解发生了什么......
  • 在你的ajax调用中,使用dataType: 'jsonp' - 了解JSONP
  • 您是否从控制台中登录的 XMLHttpRequest 中获得 SecurityError?如果您允许*,它是否有效?
  • 您在控制台中看到了什么?正在发送什么具体请求?是 OPTIONS 还是 GET?
  • 您的 javascript 控制台中应该有一个错误。在 Chrome 中(也许还有其他的,但肯定是 Chrome),它会告诉你到底是什么问题。

标签: javascript php jquery cross-domain


【解决方案1】:

要在两个不同的域之间使用 ajax,您必须使用 jsonp

您可以在here找到更多帮助

【讨论】:

  • 这更适合作为评论。但是,to each his own
  • "你必须使用 jsonp" - 不,你也可以使用 CORS,这是 OP 试图做的。
猜你喜欢
  • 2015-01-18
  • 2015-12-22
  • 2011-02-25
  • 2012-01-14
  • 1970-01-01
  • 1970-01-01
  • 2018-03-22
  • 2015-11-24
  • 1970-01-01
相关资源
最近更新 更多