angular - Angular 6 Laravel 5.6 在服务调用中使用 httpOptions 时显示 405 个方法
问题描述
我的目的是在 Angular 中生成一个对象(实际上是对象中的对象)并使用服务发送相同的对象,以便 Laravel API 可以获取数据并处理相同的数据(插入由 Angular 发送的数据)。我已经成功地在对象中生成了对象。查看控制台日志如下:
{"request":{"data":"DeTurgVx6Oyh0is0TZMJncHHJh6JBevZbgW1XL2s1uvXk7qKKMRlJ6FJ1AYAiNSxHlA0JLO9pyQgYFBWQHnliOPVHsaFtsVZ8emmsSS7MOfKBP6x2CZqCMWegRMdoaV9TJxKSEsKhD48frwiOwwD4GKChYiX0HfZKp5Wm6aQCOSuXC7HyXb+KZjbhWsmispUhz21FBf0T6NWaPmOgf/eWtMgCu2hPYj7IyrGLEmt8QwmCn79VTDmNnAeM7zecXqg/TPu1wqoYrBXq8IHUQ9+CA==","salt":"YWRnaHJ0eXVwb2Vxd2VkZg=="}}
现在,我想通过服务发送数据,以便 Laravel 可以接受它。为了做同样的事情,我做了以下事情。在这种情况下,数据是使用 post 方法提交的,但是数据没有插入数据库,因为我认为我没有Content-Type': 'application/json
将服务作为选项传递。
import { Injectable } from '@angular/core';
import { HttpClient, HttpHeaders } from '@angular/common/http';
import { Observable } from 'rxjs';
import { map } from 'rxjs/operators';
import { environment } from '../environments/environment';
import { User } from '../app/shared/models/user.model';
export class RegistrationService {
private rootUrl = environment.api;
private httpOptions: any;
constructor(private http: HttpClient) {
this.httpOptions = {
headers: new HttpHeaders({ 'Content-Type': 'application/json'})
};
}
registerUser(form){
var formValues = JSON.stringify(form);
return this.http.post(this.rootUrl+'register', formValues);
}
因此,为了纠正上述问题,我this.httpOptions
在服务中附加了 api 调用,如下所示,但它显示了我405 method not allowed
。
return this.http.post(this.rootUrl+'register', formValues, this.httpOptions);
为了克服这个问题,我附上了下面的代码是 Laravelindex.php
但是,这并不能解决问题。
header("Access-Control-Allow-Origin: *");
header('Access-Control-Allow-Methods: GET, POST, OPTIONS');
header('Access-Control-Allow-Headers: Origin, Content-Type, Accept, Authorization, X-Request-With');
header('Access-Control-Allow-Credentials: true');
$app->run();
有人可以告诉我如何解决这个问题吗?
这是Laravel中的路线: web.php
$router->get('/', function () use ($router) {
return $router->app->version();
});
$router->group([
'prefix' => 'api',
'middleware' => ['XSS'],
],
function () use ($router) {
$router->post('register', ['uses' => 'UserController@register']);
});
下面是显示 405 方法时调用的 API:
请求 URL:http://localhost/projectName/api/register 请求方法:OPTIONS 状态代码:405 Method Not Allowed 远程地址:[::1]:80 Referrer Policy:no-referrer-when-downgrade
这是响应标头:
Access-Control-Allow-Credentials: true
Access-Control-Allow-Headers: Origin, Content-Type, Accept, Authorization, X-Request-With
Access-Control-Allow-Methods: GET, POST, OPTIONS
Access-Control-Allow-Origin: *
Allow: POST
Cache-Control: no-cache, private
Connection: Keep-Alive
Content-Type: text/html; charset=UTF-8
Date: Tue, 08 Jan 2019 05:16:44 GMT
Keep-Alive: timeout=5, max=100
Server: Apache/2.4.18 (Ubuntu)
Transfer-Encoding: chunked
解决方案
推荐阅读
- hive - Hive 更新分区与 MSCK 修复
- docker - docker-compose tty 性能问题
- c# - Excel 互操作错误 - 从 Windows 服务运行时。Microsoft Excel 无法打开或保存更多文档
- windows - 加载前检查 DLL 真实性的替代方法
- python - 一个 df 是“乘以”另一个 df ,python
- sql - where 条件基于 postgesql 13 中的另一个条件
- woocommerce - 条纹不显示输入字段 Woo Commerce
- javascript - 如何根据键和值比较对象并从数组中删除
- grafana - Grafana:减少显示的标签
- java - Spring 事务和 AOP 代理