$ .post工作但不是$ .get?在不同的域名?

时间:2011-08-23 13:31:28

标签: php javascript ajax jquery

我遇到了从服务器读取数据的问题。数据存储为csv字符串,我使用php来读取数据。

读取数据

<?php 
    header('Content-Type: text/plain'); 
    $csv = file_get_contents('string.csv'); 
    echo $csv; 
?>

$.ajax({ 
    type: 'GET', 
    url: 'http://www.foobar.com/csv.php',
    async: false,
    data: null, 
    success: function(text) { 
        sv_serverArray = text.split(",");
        alert(sv_serverArray);
    } 
});

Ajax调用在域http://www.example.com上完成,php文件在http://foobar.com/csv.php上提供

当我将数据从http://www.example.com发布到http://www.foobar.com/write.php时,它有效!但不是相反。

写入数据

<?php
    $list = $_POST["array"];
    $fp = fopen('string.csv', 'w');
    fputcsv($fp, $list);
    fclose($fp);
?>

$.post("http://www.foobar.com/write.php", { 'array': sv_defaultArray});

问题是什么?为什么我只能写而不读?如果有什么我应该反过来得到错误!!

3 个答案:

答案 0 :(得分:4)

$.post()生成水下,并用它来发布。发布时,这是一个真实的请求。 $.get()使用XMLHttpRequest,它由Same-Origin Policy绑定。避免这种情况的最佳方法是jsonp。 (将CSV转换为json,或封装它)。

答案 1 :(得分:2)

出于安全目的,您无法以这种方式执行Cross Site Scripting

阅读本文:Cross domain AJAX querying with jQuery

答案 2 :(得分:2)

检查跨域解决方案here ..