仅在 laravel 用作 API 时使用 angular 4 传递 csrf 元标记
Pass csrf meta tag with angular 4 when using laravel as API only
我正在使用 Laravel 5.5 和 Angular 4。Laravel 仅作为 API。我正在尝试从表单传递数据,但无法传递 csrf 令牌。
这是我的服务:
import { ElementRef, Injectable, Injector, Renderer2, ViewChild } from '@angular/core';
import { HttpClient } from '@angular/common/http';
import { Observable } from 'rxjs/Observable';
import { Link } from './link.model';
import 'rxjs/Rx';
import { RequestOptions } from '@angular/http';
@Injectable()
export class LinkService {
constructor(private http: HttpClient) {
}
createLink(link): Observable<any> {
//links param is the data from the form
let url = 'http://127.0.0.1:8000/links';
return this.http
.post(url, link)
.map(response => {
console.log(response);
})
}
}
已编辑:我已经从 App/Kernel.php 中删除了 VerifyCsrfToken 中间件,所以现在没有错误了。但是如果有人知道是否可以通过它,请告诉我。
VerifyCsrfToken 中间件在每个 POST 请求中需要一个 Laravel session 和一个 X-CSRF-TOKEN header。默认情况下 laravel 会发送一个带有 GET 响应的 X-XSRF-TOKEN cookie,因此您可以获取该值并实施 Angular HttpInterceptor 以在您的请求中设置 header!
希望对您有所帮助!
我正在使用 Laravel 5.5 和 Angular 4。Laravel 仅作为 API。我正在尝试从表单传递数据,但无法传递 csrf 令牌。 这是我的服务:
import { ElementRef, Injectable, Injector, Renderer2, ViewChild } from '@angular/core';
import { HttpClient } from '@angular/common/http';
import { Observable } from 'rxjs/Observable';
import { Link } from './link.model';
import 'rxjs/Rx';
import { RequestOptions } from '@angular/http';
@Injectable()
export class LinkService {
constructor(private http: HttpClient) {
}
createLink(link): Observable<any> {
//links param is the data from the form
let url = 'http://127.0.0.1:8000/links';
return this.http
.post(url, link)
.map(response => {
console.log(response);
})
}
}
已编辑:我已经从 App/Kernel.php 中删除了 VerifyCsrfToken 中间件,所以现在没有错误了。但是如果有人知道是否可以通过它,请告诉我。
VerifyCsrfToken 中间件在每个 POST 请求中需要一个 Laravel session 和一个 X-CSRF-TOKEN header。默认情况下 laravel 会发送一个带有 GET 响应的 X-XSRF-TOKEN cookie,因此您可以获取该值并实施 Angular HttpInterceptor 以在您的请求中设置 header!
希望对您有所帮助!