J'ai un problème avec l'envoi de données javascript vers mon contrôleur.
Il y a mon Ajax Routes: Et il y a my RacesController: Et l'erreur dit que cela a été bloqué par CORS-politiques. public function Points(Request $request) {
$test = $request->input('data');
return "$test";
}
Route::get('/home', 'HomeController@index')->name('home');
Route::resource('/races','RacesController');
Route::post('updateC', 'RacesController@Points');
var point = JSON.stringify(points);
function onBtnClick() {
$.ajaxSetup({
header:{
'X-CSRF-TOKEN':$('meta[name="csrf-token"]').attr('content')
}
});
$.post('http://localhost/updateC', {
data: point,
dataType: 'json',
contentType:'application/json',
})
.done(function() {
alert('success');
})
.fail(function() {
alert("error");
});
}
4 Réponses :
allez dans le dossier middleware, le fichier verifycsrftoken,
protected $middleware = [ ...... \App\Http\Middleware\Cors::class, //added here ];
et ajoutez cette URL au tableau except
namespace App\Http\Middleware; use Closure; class Cors { public function handle($request, Closure $next) { $allowedOrigins = ['http://oursite.com', '*.myost.net','*','www.aminu.*']; $origin = isset($_SERVER['HTTP_ORIGIN']) ? $_SERVER['HTTP_ORIGIN'] : ''; if (in_array($origin, $allowedOrigins)) { return $next($request) ->header('Access-Control-Allow-Origin', $origin) ->header('Access-Control-Allow-Methods', 'GET, POST, PUT, DELETE, OPTIONS') ->header('Access-Control-Allow-Headers',' Origin, Content-Type, Accept, Authorization, X-Request-With, cache-control,postman-token, token') ->header('Access-Control-Allow-Credentials',' true'); } return $next($request); } }
pour gérer les exceptions à vos demandes de publication ajax, vous pouvez ensuite utiliser le
Barryvdh Laravel Cors a > package pour se débarrasser du problème de cors,
si vous utilisez laravel 5.6, vous n'avez besoin d'aucun package CORs pour cela,
créez simplement un middleware CORs
protected $except = [ .... http://localhost/updateC ];
et ajoutez un middleware au fichier kernel.php
app/Http/Middleware/VerifyCsrfToken.php
Vous pouvez spécifier dans votre route le middleware utilisé: Route :: post ('/ updateC', array ('middleware' => 'cors', 'uses' => 'RaceController @ point')); < / code>, après avoir enregistré ce middleware dans votre fichier
app \ Http \ Kernel.php
. Source: stackoverflow.com/questions/33076705/ …
Je l'ai enregistré et utilisé votre itinéraire et cela ne fonctionne toujours pas.
Vous devez ajouter un jeton csrf dans votre propriété data
du post ajax comme ceci:
data: { "_token": "{{ csrf_token() }}", "point": point }
Rien n'a changé toujours la même erreur.Regardez la première réponse que je l'ai liée.
protected $except = [ 'updateC' ];
Code Ajax
var abc = 'hello world'; $.ajax({ type: "GET", url: 'http://your url', data : { abc : abc } success: function (data) { // write your code }, error: function (data) { // write your code } });
Vous devez ajouter l'en-tête x-csrf-token, consultez la documentation: laravel.com/docs/5.7 / csrf
Quelles sont les données que vous devez publier? ... ou montrer votre formulaire?
les données sont mes points que j'ai créés points [currentid] = {id: currentid, x: event.offsetX, y: event.offsetY}; currentid ++;
avez-vous ajouté
dans votre page d'envoi ajax. et s'il vous plaît capture d'écran de votre console de navigateur. Demande Ajax.
J'ai essayé et je ne fonctionne toujours pas. Mais voici mon lien d'erreur
@Patrik
Route :: post ('updateC', ['uses' => 'RacesController @ Points', 'as' => 'race.post']); $ .post ("{{route ('race.post')}}", {
Modifiez le code ci-dessus et essayez. Si votre domaine d'accès et votre domaine d'URL ajax ne sont pas identiques, l'URL est également bloquée. Votre accès l'url est 127.0.0.1 et l'url ajax est l'hôte local. (référez-vous à votre capture d'écran)Eh bien, j'ai fait la même recherche par moi-même et l'erreur principale est maintenant résolue. J'ai essayé votre solution maintenant et il y a cette autre erreur link . Et voici mon nouvel ajax `$ .ajax ({url:" {{route ('race.post')}} ", tapez: 'POST', data: {_token : "{{csrf_token ()}}", _method: 'PUT', points: point, dataType: 'json', contentType: 'application / json',}}) `
pourquoi vous utilisez
_method: 'PUT'
cela devrait être POST dans la route POST. capture d'écran d'ajax respone à partir de l'onglet réseau, cela vous aidera à comprendre l'erreur.Quelqu'un m'a dit lors de la mise à jour de quelque chose que vous devriez utiliser la méthode PUT, alors je l'ai essayée. Il y a le lien de réponse.
Ok si vous utilisez la méthode PUT, alors dans route, vous devez également définir Route :: PUT. changez-le et essayez-le. vérifiez également le fichier journal concernant l'erreur. et l'image de réponse u téléchargée n'est que les données u envoyées au serveur. mais j'ai besoin de la réponse du serveur. où une exception d'erreur est levée.
stackoverflow.com/ questions / 10883211 /… vérifier ceci
J'ai fait quelques changements et l'erreur a disparu, mais un autre apparaît .. et c'est celui-ci lien .
envoyer une capture d'écran, par exemple. https://imgur.com/DxBOpnF
Eh bien, ce sont les captures d'écran et ça a l'air intéressant. aperçu et réponse
c'est à cause de csrf_token () si u utilisé {{csrf_token ()}} dans le fichier .js, il ne sera pas compilé et ne fonctionnera pas.