我知道这个问题之前已经被问过,但我尝试过的解决方案都不起作用,我编写了一个在服务器上托管的 php 休息服务,我在 chrome 上使用了高级休息客户端数据来测试我的休息服务,并且它有效,它将数据发送到数据库,但是当我在下面的 ajax 帖子中编写自己的客户端时,浏览器提示
No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://localhost:8383' is therefore not allowed access.
我尝试向我的 php 代码添加 header 仍然不起作用,我收到另一个错误...,我只是想知道我做错了什么?
>// MY PHP REST SERVICE
<?php
$servername = "localhost";
$username = "root";
$password = "xxxx";
$dbname = "xxx";
// Create connection
$conn = new mysqli($servername, $username, $password, $dbname);
// Check connection
if ($conn->connect_error) {
die("Connection failed: " . $conn->connect_error);
}
if($_SERVER['REQUEST_METHOD'] == "POST"){
// Get data
$name = $_POST['name'];
$surname = $_POST['surname'];
$email = $_POST['email'];
$password = $_POST['password'];
// Insert data into data base
$sql = "INSERT INTO UserData.register (name, surname, email, password)
VALUES ('$name', '$surname', '$email','$password')";
if ($conn->query($sql) === TRUE) {
$json = array("status" => 1000, "msg" => "Done User added!");
} else {
$json = array("status" => 0, "msg" => "Error adding user!");
}
header('Content-type: application/json');
echo json_encode($json);
$conn->close();
}
> //MY java script ajax client doing the posting.
<script type="text/javascript">
function RegisterUser() {
var name = $("#name").val();
var surname = $("#surname").val();
var email = $("#email").val();
var password = $("#password").val();
$.ajax({
type: "POST",
url: "http://xxx.xxx.xxx.xxx/signup.php",
data: '{"name":"' + name + '","surname":"' + surname + '","email":"' + email + '","password":"' + password + '"}',
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function (msg) {
alert(msg.d)
}
});
}
</script>
最佳答案
尝试使用 .htaccess 文件
header 添加 Access-Control-Allow-Origin "*"
header 添加 Access-Control-Allow-Methods: "GET,POST,OPTIONS,DELETE,PUT"
CORS 指南是 here其中列出了解决 CORS 问题的所有可能方法。
关于javascript - 将 Ajax 数据发布到 PHP REST 服务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29192837/