gpt4 book ai didi

angularjs - Angular $http 返回 "no access control allow origin" header ,但 jQuery $.get 请求返回信息

转载 作者:行者123 更新时间:2023-12-01 03:48:39 25 4
gpt4 key购买 nike

jQuery $.get, $.post 怎么能得到想要的结果而angular 不能$http.get, $http.post?为什么原始策略不适用于 angular 而是适用于 jquery?

Laravel 后端, Angular 前端。我正在考虑只使用 jQuery,因为它不会阻止 CRUD 操作在客户端发生。

我配置了 $http 和 $httpProvider ...

.run(function($http){
$http.defaults.headers.common['Access-Control-Allow-Origin'] = "*";
$http.defaults.headers.common['Access-Control-Allow-Methods'] = "GET, POST, PUT, DELETE, OPTIONS";
$http.defaults.headers.common['Access-Control-Allow-Headers'] = "Authorization";
})
.config(function($httpProvider) {
$httpProvider.defaults.useXDomain = true;
})

而laravel 正在发回适当的 header ...
App::after(function($request, $response)
{
// header('Access-Control-Allow-Origin', '*');
$response->headers->set('Access-Control-Allow-Origin', '*');
});

所以奇怪的是 angular $http 无法从服务器获取任何东西并产生这个错误:
XMLHttpRequest cannot load http://0.0.0.0:8000/api/test. No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://localhost:9000' is therefore not allowed access. 

但是 jQuery $.get 和 $.post 工作正常!
$.post('http://0.0.0.0:8000/api/test', function(resp){
console.log(resp);
});

我在这里做错了什么?

最佳答案

.config(['$httpProvider', function($httpProvider) {
$httpProvider.defaults.useXDomain = true;
delete $httpProvider.defaults.headers.common['X-Requested-With'];
}
]);

刚设置 useXDomain要真实是不够的。 AJAX 请求也与 X-Requested-With 一起发送 header ,表明它们是 AJAX。删除 header 是必要的,因此服务器不会拒绝传入的请求。

尝试在 filters.php 中添加它:
App::before(function($request)
{
if (Request::getMethod() == "OPTIONS") {
$headers = array(
'Access-Control-Allow-Methods'=> 'POST, GET, OPTIONS, PUT, DELETE',
'Access-Control-Allow-Headers'=> 'X-Requested-With, content-type, Authorization',);
return Response::make('', 200, $headers);
}
});

飞行前请求可能失败

关于angularjs - Angular $http 返回 "no access control allow origin" header ,但 jQuery $.get 请求返回信息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24743598/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com