表单 post 给出 405 错误

Form post giving 405 error

我正在尝试 post 数据到服务器。我的 php 端工作正常。当我尝试使用 postman 时,post 正在工作。但是从 angular 我得到 405 (Method Not Allowed) 错误:

zone.js:2935 OPTIONS http://angularslim.local/public_html/users 405 (Method Not Allowed)

Failed to load http://angularslim.local/public_html/users: Response for preflight has invalid HTTP status code 405.

我的代码如下: 在我的服务中,我有以下代码。

@Injectable()
export class AuthService {
    constructor(private http: Http) {}
    register(user:User){
        this.http.post("http://angularslim.local/public_html/users", user).subscribe((res: Response) => {
            console.log("inside");
        })
    }

在我的 php 部分我确实有这些行

header("Access-Control-Allow-Origin: *");
header("Access-Control-Allow-Headers: Content-Type");

您需要允许交叉来源和方法

https://developer.mozilla.org/en-US/docs/Web/HTTP/CORS

也试试这个https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Access-Control-Allow-Methods

此外,我建议您使用 HttpClient(不推荐使用 http)和 HttpResponse

如果您使用 Slim,这主要是因为您的 Javascript 代码发送了 HTTP OPTIONS 请求,而没有处理 HTTP OPTIONS 的路由。

您需要添加处理 OPTIONS 请求的路由或修改导致 preflight request to be sent (by making it a simple request. Take a look at this question ) 的任何 Javascript 代码。

添加处理 OPTIONS 的路由

$app->options('/users', function ($request, $response, $args) {
     //do something here
]);

更多信息:

您是否尝试通过 JSON.stringify(用户)传递表单值。我以前有过同样的问题。后来发现是我的问题。

this.http.post("your api url", JSON.stringify(user))
    .subscribe(
    (val) => {
            console.log("POST call successful value returned in body", val);
});

希望这对你有用。