【发布时间】:2019-10-22 10:06:05
【问题描述】:
我正在尝试向 PHP API 发出发布请求,但得到“资源上未设置 Access-Origin-Control 标头”错误,但标头已设置。当我向 Postman 发出请求时,一切都很好,您可以在答案中看到已设置标题。
我已经尝试将标题设置为 * 但没有帮助。
角度
createUser(formData: FormData) {
const httpOptions = {
headers: new HttpHeaders({
'Content-Type': 'multipart/form-data',
})
};
return this.http.post(this.apiURL + 'create_user', formData, httpOptions);
}
PHP
<?php
header("Access-Control-Allow-Origin: http://localhost:4200");
header("Access-Control-Allow-Methods: PUT, GET, POST, DELETE");
header("Access-Control-Allow-Headers: Origin, X-Requested-With, Content-Type, Accept");
/**
* Creates a User.
*/
require 'database.php';
$cost = 10;
$user = array();
$username=$_POST["username"];
$email=$_POST["email"];
$password=$_POST["password"];
$password_hash = password_hash($password, PASSWORD_BCRYPT, ["cost" => $cost]);
$resultCreate = pg_query_params($con, "INSERT INTO wriggling_snakes.users (email, username, password) VALUES ($1, $2, $3)", array($email, $username, $password_hash));
$resultFind = pg_query($con, "SELECT id, username FROM wriggling_snakes.users WHERE wriggling_snakes.users.email='$email'");
if(!$resultFind){
echo "Error";
}else {
$i = 0;
while ($row = pg_fetch_assoc($resultFind)) {
$user['id'] = $row['id'];
$user['username'] = $row['username'];
$i++;
}
echo json_encode($user);
}
邮递员回答标题
日期 →2019 年 6 月 6 日星期四 20:58:13 GMT 服务器 →Apache/2.4.39 (Unix) OpenSSL/1.0.2r PHP/7.1.29 mod_perl/2.0.8-dev Perl/v5.16.3 X-Powered-By →PHP/7.1.29 访问控制允许来源→http://localhost:4200 访问控制允许方法 →PUT、GET、POST、DELETE Access-Control-Allow-Headers →Origin, X-Requested-With, Content-Type, Accept 内容长度 →30 Keep-Alive →timeout=5, max=100 连接→保持活动状态 内容类型→文本/html;字符集=UTF-8
【问题讨论】:
-
“no Access-Origin-Control”错误 — 引用完整的错误信息,不要含糊其辞。