CORS请求无法通过。不确定为什么

时间:2015-03-20 21:00:17

标签: javascript php jquery xml cors

控制台告诉我......

阻止跨源请求:同源策略禁止在" example.com"中读取远程资源。这可以通过将资源移动到同一域或启用CORS来解决。

我已经在createCORSRequest函数和makeCORSRequest函数中创建了XHR对象。请求使用URL参数执行,该参数是一个PHP文件,其中包含允许从任何来源访问的代码。下面是来自CORS函数的位,然后是php文件。

// Create the XHR object
function createCORSRequest(method, url) {
var xhr = new XMLHttpRequest();
if ("withCredentials" in xhr) {
    // XHR for Chrome/Firefox/Opera/Safari
    xhr.open(method, url, true);
    }
else if (typeof XDomainRequest != "undefined") {
    // XDomainRequest is for Internet Explorer
    xhr = new XDomainRequest();
    xhr.open(method, url);
    }
else {
    // CORS not supported.
    xhr = null;
    }
return xhr;
}


// Helper method to parse the title tag from the response.
function getTitle(text) {
  return text.match('<title>(.*)?</title>')[1];
}

function makeCORSRequest() {
    var url = "example.com/directory/file.php";

var xhr = createCORSRequest("POST", url);
if (!xhr) {
console.log("CORS not supported");
    return;
}

//Response Handlers.
xhr.onload = function() {
    var text = xhr.responseText;
    var title = getTitle(text);                                     
    console.log("Response from CORS request to " + url);
};

xhr.onerror = function() {
    console.log("Whoops, there was an error making the request.");
};

php文件

    if (isset($_SERVER['HTTP_ORIGIN'])) {
    header("Access-Control-Allow-Origin: {$_SERVER['HTTP_ORIGIN']}"); //{$_SERVER['HTTP_ORIGIN']} can be changed to specific sites to allow access
    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);
}

这里的整体gyst是页面1加载并且来自该页面1的数据被写入XML文件,当点击到不同服务器上的页面2的超链接时,用户可以提交解析XML文件的表单特定节点。包含CORS请求和PHP文件的javascript文件都是在加载第1页时访问的。代码本身似乎都运行正常,除了2个地方......

在第2页,解析XML文件的javascript中包含jQuery,我收到一条错误消息:

TypeError:$(...)。validate不是函数

据我所知,这是一个合法的功能。控制台中的此错误在CORS阻止通知之前出现,因此不确定它是否起作用。

0 个答案:

没有答案