2014-10-07 4 views
2

최근에 내 사이트가 HTTPS를 사용하도록 전환했습니다. 나는 Laravel을 PHP 프레임 워크로 사용하고있다. 처음에는 "Origin-null이 Access-Control-Allow-Origin으로 허용되지 않습니다."라는 문제가 발생했습니다. 내가 리디렉션에 무엇입니까 대신 십자가 원산지 오류로 이제HTTPS 아약스 요청

$.ajax({ 
      type: 'GET', 
      url: '/media/search/', 
      data: { 'q':search_string }, 
      success: function(d) { } 
    }); 

:

App::before(function($request) 
{ 
    header("Access-Control-Allow-Origin: *"); 
    header("Access-Control-Allow-Methods: GET, POST, OPTIONS"); 
}); 

(가) 아약스 요청입니다 : 오류,하지만 난 내 filters.php이를 사용하여 해당 고정했다 로드해야하는 콘텐츠 대신 내 로그인 페이지. 저는 Laravel이 가지고있는 CSRF 토큰 구현과 관련이 있다고 생각합니다. 그러나 요청에 토큰을 추가하거나 해결할 수있는 방법을 모르겠습니다. 누구든지 어떤 제안이 있습니까?

편집 :

: 내가 대신 전화를 사용하여 진행 한이 후

XMLHttpRequest cannot load http://website.com/media/search?&q=500 . No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin ' https://website.com ' is therefore not allowed access.

: 내 filter.php에서 그 헤더 기능이없는 경우

나는이 오류

하지만

$.ajax({ 
     type: 'GET', 
     url: 'https://website.com/media/search/', 
     data: { 'q':search_string }, 
     success: function(d) { } 
}); 
여전히 당신이 난에서 AJAX를 제거 할 수 CRSF 관련이 있다면 행운

+1

작동하지 않을 수 있습니다 HTTP에서 AJAX 요청을하는 경우

'secure' => false, 

. 'Access-Control-Allow-Origin'은 필요하지 않습니다. – mithunsatheesh

+0

내 편집을 참조하십시오. 아약스 호출에서 https를 강제 실행하는 방법을 알 수 없습니다. 내 전화에 https : // website/search/'를 넣지 만 여전히 http로 전화를 걸 것입니다. –

+0

http <-> https는 교차 도메인으로 간주됩니다. ajax 호출에 대해 동일한 프로토콜을 사용하십시오. –

답변

1

t :

Route::filter('csrf', function() 
{ 
    if (!Request::ajax() && Session::token() != Input::get('_token')) 
    { 
     throw new Illuminate\Session\TokenMismatchException; 
    } 
}); 

!Request::ajax() 규칙을 처음에 추가합니다. 데이터에 _token을 추가 할 수도 있습니다.

당신은 또한 당신의 app/config/session.php 파일 봐야한다 : true로 설정하고 당신이 여기에 크로스 도메인 호출을하지 않는

+0

그것은 cSrf (교차 사이트 요청 위조)입니다. 그것이 csrf 필터 예외를 던지면, 왜 그는 로그인 페이지에서 끝날 것입니까? 인증 필터 (또는 일부 컨트롤러 리디렉션)가 더 적합합니다. – alou

+0

@alou CSRF 필터가 정의되는 방식에 따라 다릅니다. 사용자를 로그 아웃하고 로그인 페이지로 리디렉션하도록 정의 할 수 있습니다. –

+0

제안 해 주셔서 감사하지만 작동하지 않았습니다. 나는 여전히 로그인 페이지로 리다이렉트되어있다. –