嗨我已经在laravel中有一个api,但我需要使用快速节点js访问。
这是我的功能
var data = querystring.stringify({
_token: 'LhTsymoueRtcWtjP69MD1KEbDyGl0NGuewWOieER',
propertiesString: properties
});
var options = {
hostname: 'apiproperties.local',
port: 80,
path: '/properties/storeSB',
method: 'POST',
headers: {
'Content-Type': 'application/x-www-form-urlencoded',
'Content-Length': Buffer.byteLength(data)
}
/*headers: {
'Content-Type': 'application/json',
}*/
};
var req = http.request(options, function(res) {
res.setEncoding('utf8');
console.log('Status: ' + res.statusCode);
console.log('Headers: ' + JSON.stringify(res.headers));
res.on('data', function (chunk) {
console.log("body: " + chunk);
});
});
req.write(data);
req.end();
这给我错误Illuminate / Foundation / Http / Middleware / VerifyCsrfToken.php第68行,因为我不发送_token,但我不知道如何在nodejs中发送令牌我没有在nodejs中的视图,因为我不想使用我不需要它,如何在我的帖子请求中发送令牌而不在一个视图中调用表单?问候
答案 0 :(得分:1)
您应该从Laravel
中删除您在CSRF保护检查中间件中写的api默认VerifyCsrfToken
中间件应用于路由组web
,所以这里有两个选项: -
创建名为api
的新中间件组
用于创建中间件的代码段
routes.php
Route::group(['prefix' => 'api/v1','middleware' => ['api']], function () {
Route::get('/hotel/list',[
'uses' => 'YourController@function'
]);
});
VerifyCsrfToken.php
protected $except = [
'api/v1/*',
];
直接排除CSRF检查路线
在VerifyCsrfToken.php
中添加要忽略的所有api的URL以进行CSRF检查
class VerifyCsrfToken extends BaseVerifier
{
/**
* The URIs that should be excluded from CSRF verification.
*
* @var array
*/
protected $except = [
'url_regex'
];
}
我们建议使用第一种方法,因为所有未来的新路由都可以解决,我们只需要在这个中间件组下添加该路由。
如果有问题,或者有任何疑问,请在评论中告诉我。