我最近改变了我的网站使用HTTPS。我使用Laravel作为一个php框架。在开始时,我遇到了一个问题,我会得到一个‘Origin.’是不允许的访问-控制-允许-原始。“错误,但通过在我的filters.php中使用以下内容修复了这个错误:
App::before(function($request)
{
header("Access-Control-Allow-Origin: *");
header("Access-Control-Allow-Methods: GET, POST, OPTIONS");
});
ajax请求是:
$.ajax({
type: 'GET',
url: '/media/search/',
data: { 'q':search_string },
success: function(d) { }
});
现在,我得到了一个重定向到我的登录页面,而不是应该加载的内容,而不是交叉起源错误。我认为这与Laravel所拥有的CSRF令牌实现有关,但我不确定我应该采取何种方式将该令牌添加到请求中,或者如何修复它。有人有什么建议吗?
编辑:
如果在我的filter.php中没有这些标头函数,我会得到以下错误:
XMLHttpRequest无法加载http://website.com/media/search?&q=500。请求的资源上没有“访问-控制-允许-原产地”标题。因此,“https://website.com”源是不允许访问的。
在此之后,我转而使用这个调用:
$.ajax({
type: 'GET',
url: 'https://website.com/media/search/',
data: { 'q':search_string },
success: function(d) { }
});
但还是没有运气
发布于 2014-10-07 12:34:36
如果它与CRSF相关,则可以从其中删除AJAX:
Route::filter('csrf', function()
{
if (!Request::ajax() && Session::token() != Input::get('_token'))
{
throw new Illuminate\Session\TokenMismatchException;
}
});
在开头添加!Request::ajax()
规则。还可以将_token
添加到数据中。
您还应该查看您的app/config/session.php
文件:
'secure' => false,
如果它被设置为true,并且您从http发出AJAX请求,则它可能无法工作。
https://stackoverflow.com/questions/26235974
复制相似问题