表单 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);
});
希望这对你有用。
我正在尝试 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
添加处理 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);
});
希望这对你有用。