JQuery Ajax发布到其他服务器上的php文件无效

时间:2016-05-27 08:32:46

标签: javascript php jquery ajax server

我正在编写一个工具,你可以将我的javascript文件链接到你的网站,这个javascript文件在我的服务器上发送一个ajax文件到一个php文件。

疯狂的事情是,当我将javascript文件链接到我的网络服务器上的页面时,它可以正常工作,但是当我将javascript文件链接到另一个网站上时(其他服务器)它不起作用...这里代码:< / p>

phpwrite2.php :(应该在我的服务器上创建文件的文件)

   <?php

if ($_SERVER['REQUEST_METHOD'] == 'OPTIONS') {
    header('Access-Control-Allow-Origin: *');
    header('Access-Control-Allow-Methods: POST');
    header('Access-Control-Allow-Headers: '.$_SERVER['HTTP_ACCESS_CONTROL_REQUEST_HEADERS']);
    exit();
}

header('Access-Control-Allow-Origin: *');


$myFile = $_POST['filename'];
$myFile = "users/".$myFile;

chmod("users/",0777);

$fh = fopen($myFile, 'a') or die("can't open file");
$stringData = $_POST["name"];
fwrite($fh, $stringData."\n");
fclose($fh);
?>  

JQuery将ajax发布到phpwrite2.php文件中:

function writeToFile() {

    $.ajax({
        type: 'POST',
        url: 'http://alexehgm.myhostpoint.ch/phpwrite2.php',
        crossDomain: true,
        data: '{"name":name, "filename" : filename}',
        dataType: 'txt',
        success: function(responseData, textStatus, jqXHR) {
            var value = responseData.someKey;
        },
        error: function (responseData, textStatus, errorThrown) {
            alert('POST failed.');
        }
    });

感谢您阅读我的问题,我希望您的专业人士了解解决方案或找到错误。 提前谢谢!

1 个答案:

答案 0 :(得分:0)

基本上,它归结为在OPTIONS请求(预检请求)上发送正确的CORS标头以及连续请求的标头:

if ($_SERVER['REQUEST_METHOD'] == 'OPTIONS') {
    header('Access-Control-Allow-Origin: *');
    header('Access-Control-Allow-Methods: POST');
    header('Access-Control-Allow-Headers: '.$_SERVER['HTTP_ACCESS_CONTROL_REQUEST_HEADERS']);
    exit();
}

header('Access-Control-Allow-Origin: *');
// Your code here

说明:

  • Acess-Control-Allow-Origin:设置允许的域 访问此资源。
  • Acess-Control-Allow-Methods:设置允许访问资源的HTTP方法。
  • Access-Control-Allow-Headers:这些是允许的其他标头。您可以使用请求的标头来简单地允许所有请求。这不能是*