我正在编写一个工具,你可以将我的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.');
}
});
感谢您阅读我的问题,我希望您的专业人士了解解决方案或找到错误。 提前谢谢!
答案 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
:这些是允许的其他标头。您可以使用请求的标头来简单地允许所有请求。这不能是*
。