跨源请求阻止:在发送头的问题在Angular2 post请求到laravel [英] Cross-Origin Request Blocked: issue on sending headers in Angular2 post request to laravel
本文介绍了跨源请求阻止:在发送头的问题在Angular2 post请求到laravel的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我使用angular2 + laravel,我试图用头文件发布请求,但它给予跨原始请求阻止:错误。如果任何机构知道如何解决它。
I am using angular2+laravel and I am trying to post the request with headers but its giving Cross-Origin Request Blocked: error. If any body knows how to resolve it.
我做了一些可能的解决方案,如启用Access-Control-Allow-Origin*在htaccess文件的laravel和创建CORS中间件但这些解决方案不工作。这里是我的angular代码。
I did some possible solution like enable Access-Control-Allow-Origin "*" in htaccess file of laravel and created CORS Middleware but these solutions are not working. Here is my code of angular.
import { Injectable } from '@angular/core';
import { Http, Headers, Response, RequestOptions } from '@angular/http';
import { Observable } from 'rxjs/Observable';
import 'rxjs/add/operator/map'
import configApp = require('../_configs/app.settings');
//import '../assets/frontend/custom/js/jquery.toaster.config.js';
declare function maketoast(status: string, message: string) : void;
@Injectable()
export class ForgotpasswordService {
constructor(private http: Http) { }
forgotPassword(email: string, token: string) {
alert(token)
var headers = new Headers();
// headers.append('Content-Type', 'application11/json');
let headers = new Headers();
headers.append("Authorization", "Bearer " + token;
let options = new RequestOptions({ headers: headers });
// console.log(configApp.apiUrl+/test);
return this.http.post(configApp.apiUrl+"/password/email", JSON.stringify({ email: email, apiRequest:1}), options } )
.map((response: Response) => {
// login successful if there's a jwt token in the response
let user = response.json();
console.log(user.status);
if(user.status == false){
maketoast(user.toaster_status, user.message);
event.stopImmediatePropagation;
event.preventDefault();
event.stopPropagation();
}
if (user.status == true) {
maketoast(user.toaster_status, user.message);
}
});
}
resetPassword(token: string, email: string, password: string, confirmPassword: string) {
// console.log(configApp.apiUrl+/test);
return this.http.post(configApp.apiUrl+"/password/reset", JSON.stringify({ token: token, email: email, password: confirmPassword, confirmPassword: password, apiRequest:1}))
.map((response: Response) => {
// login successful if there's a jwt token in the response
let user = response.json();
console.log(user.status);
if(user.status == false){
maketoast(user.toaster_status, user.message);
event.stopImmediatePropagation;
event.preventDefault();
event.stopPropagation();
}
if (user.status == true) {
maketoast(user.toaster_status, user.message);
}
});
}
}
推荐答案
这是服务器端问题。
创建中间件:
namespace App\Http\Middleware;
use Closure;
class Cors
{
/**
* Handle an incoming request.
*
* @param \Illuminate\Http\Request $request
* @param \Closure $next
* @return mixed
*/
public function handle($request, Closure $next)
{
return $next($request)
->header('Access-Control-Allow-Origin', '*')
->header('Access-Control-Allow-Methods', 'GET, POST, PUT, DELETE, OPTIONS');
}
}
并添加到您的路线:
Route::group(['middleware' => ['cors']], function () {
//您的路由代码
});
//YOUR route code });
这篇关于跨源请求阻止:在发送头的问题在Angular2 post请求到laravel的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文