Umu*_*rin 17 php cors laravel laravel-4
我正在编写API,并使用Laravel 4来实现这一目标.我的api处于不同的领域.我们假设它是:http://api-example.com/
当我尝试通过Backbone从我的web-app(即mydomain.com
)使用基本身份验证向我的api发出ajax请求时,它有时可以正常工作,但有时它不会.我想弄明白为什么.下面是我的App::before
过滤器和App::after
过滤器.
App::before(function($request)
{
if($_SERVER['REQUEST_METHOD'] === 'OPTIONS') {
$statusCode = 204;
$headers = [
'Access-Control-Allow-Origin' => 'http://mydomain.com',
'Allow' => 'GET, POST, OPTIONS',
'Access-Control-Allow-Headers' => 'Origin, Content-Type, Accept, Authorization, X-Requested-With',
'Access-Control-Allow-Credentials' => 'true'
];
return Response::make(null, $statusCode, $headers);
}
});
Run Code Online (Sandbox Code Playgroud)
我的后过滤器:
App::after(function($request, $response)
{
$response->headers->set('Access-Control-Allow-Origin', 'http://mydomain.com');
$response->headers->set('Allow', 'GET, POST, OPTIONS');
$response->headers->set('Access-Control-Allow-Headers', 'Origin, Content-Type, Accept, Authorization, X-Requested-With');
$response->headers->set('Access-Control-Allow-Credentials', 'true');
return $response;
});
Run Code Online (Sandbox Code Playgroud)
问题是,当我尝试/login
使用凭据发出请求时,API检查数据库并获取用户的API密钥.这只是工作正常.但是,当我尝试向/users
chrome发出POST请求时,只会给出以下错误:
XMLHttpRequest cannot load http://api-example.com/users. Origin http://mydomain.com is not allowed by Access-Control-Allow-Origin.
Run Code Online (Sandbox Code Playgroud)
我什么都试过,如设置Access-Control-Allow-Origin
到'*'
了所有我能能够从互联网上找到.但迄今为止没有任何工作.我不知道该怎么做.
标题名称中有错误.
header('Allow', 'GET, POST, OPTIONS'); // This is wrong.
header('Access-Control-Allow-Methods', 'GET, POST, OPTIONS'); // This is right.
Run Code Online (Sandbox Code Playgroud)
小智 0
有些浏览器可能会否认这一点,因为 XSS 脚本正在以这种方式做一些令人讨厌的事情。
如果您从http://api-example.com/加载 js 文件可能会有所帮助,但还有更稳定的解决方案:
这取决于您的基础设施和需求,但如果性能很重要,请跳过curl。
归档时间: |
|
查看次数: |
9446 次 |
最近记录: |