2013-12-11 2 views
1

https를 통한 jQuery의 아약스 메소드에 문제가 있습니다.https를 통한 jQuery 아약스

전체 사이트는 https를 통해 제공됩니다. 대부분의 양식은 ajax를 통해 처리 페이지로 제출됩니다. 아약스 기능의 URL은 기본적으로 :

# Redirect any http requests to https 
RewriteCond %{HTTPS} off 
RewriteRule .* https://%{HTTP_HOST}%{REQUEST_URI} [L] 

내가 리디렉션을 제거하면 아약스가 잘 작동 :

$.ajax({ 
    "/assets/php/ajax/processor.php", 
    ... 
}); 

가 나는 또한 이렇게 같은 HTTPS 것들에 대한 모든 HTTP 요청을 리디렉션 .htaccess 파일을 .htaccess 파일에 있지만 거기에서 작동하지 않는 것 같습니다. 이것은 ajax가 http (jQuery 설명 .ajax() : asynchronous HTTP (Ajax) 요청을 수행)를 통해 작동하기 때문입니다. 따라서 .htaccess 리디렉션은 ajax 요청을 포착합니다.

사이트의 사용자가 http 버전을 사용하는 것을 원하지 않기 때문에 리디렉션이 필요합니다 (모든 페이지에 헤더에 로그인 표시가 있음)하지만 https로도 보안을 유지하려면 iLax가 필요합니다. 어떤 도움

+1

브라우저가 현재 가리키는 경우 HTTPS 요청으로 가야한다 사용하고있는 것과 같은 상대 URL을 사용하여 Ajax 요청 https 도메인. "작동하지 않을 때"콘솔에 표시되는 오류를 제공 할 수 있습니까? –

+0

그게 내가 생각한거야,하지만 RewriteCond는 요청이 https (RewriteCond % {HTTPS} off)를 넘지 않았 음을 의미하는 ajax 요청을 잡는 것 같습니다 –

답변

0

변경 :

RewriteCond %{HTTPS} off 
RewriteCond %{REQUEST_URI} !/assets/php/ajax/processor\.php [NC] 
RewriteRule^https://%{HTTP_HOST}%{REQUEST_URI} [L,R] 
+0

https 리디렉션에서 프로세서 페이지를 제외하면 데이터가 전송됩니다 프로세서 페이지에 여전히 암호화되어 있습니까? –

+0

'/ assets/php/ajax/processor \ .php'로가는 데이터는 암호화되지 않습니다. 죄송합니다.'/ assets/php/ajax/processor \ .php'를 항상 https로 유지 하시겠습니까? – anubhava

+0

AJAX에서'https://domain.com/assets/php/ajax/ 프로세서 \ .php'? – anubhava

0

서버의 헤더에 액세스 제어 - 허용 - 원산지를 추가 사전에

감사 : 예상대로

Access-Control-Allow-Origin: https://yoursite.com

그런 다음 원래의 .htaccess 파일이 작동합니다. 규칙은 AJAX URI에 대한 HTTPS로 전환 건너 뛸