2014-10-22 2 views
0

PHP의 헤더 기능에 문제가 있습니다. 기능 호출은 보안 HTTPS 페이지에서 시작됩니다. http : //로 헤더 함수를 호출 할 때마다 어딘가에서 프로토콜을 HTTPS로 변경하고 있습니다. 내 프로그램에서PHP HTTPS to HTTP

, 예 :

header("Location: http://www.google.com"); 

대신 https://www.google.com 날을합니다.

내 환경은 자동으로 http를 https로를 강제 실수로 IIS 또는 php.ini 파일 중 하나를 사용할 수있는 무언가가 거기에 빠른 CGI

와 IIS 7.5 윈도우 2008 64 비트 PHP 5.5.12입니까?

http 페이지에서 코드를 실행하면 http에서 http로, http에서 https로, https에서 https로 코드를 시작할 때 발생하지 않습니다. 그러나 https에서 http로 실패합니다.

나는 검색을 해왔고 대부분의 결과는 http를 https로 강제하는 방법을 보여줌으로써 내 질문을 역전시킵니다. 반대가 필요해.

미리 도움을 청하십시오!

편집 : Google은 예제 URL입니다. 죄송합니다.

header("Location: http://www.systronicsinc.com/"); 

은 실제 URL입니다. 이렇게하면 https://www.systronicsinc.com/으로 리디렉션됩니다.

이것은 Fiddler의 원시 헤더입니다.

HTTP/1.1 303 See Other 
Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0 
Pragma: no-cache 
Content-Type: text/html; charset=UTF-8 
Expires: Thu, 19 Nov 1981 08:52:00 GMT 
Location: https://www.systronicsinc.com/ 
Server: Microsoft-IIS/7.5 
X-Powered-By: PHP/5.5.12 
Set-Cookie: PHPSESSID=va1hh3ff8h0buus689kf86eoc1; path=/ 
Date: Fri, 24 Oct 2014 17:39:34 GMT 
Content-Length: 156 

<head><title>Document Moved</title></head> 
<body><h1>Object Moved</h1>This document may be found <a HREF="http://www.systronicsinc.com/">here</a></body> 

나는 흥미 본문에 링크로 초기 설정 원본 http 프로토콜을 유지 것을 발견하지만, 헤더의 위치 필드는 HTTPS로 변경됩니다. 나는 IIS와 php.ini 파일을 통해 사냥을 해왔다. 나는이 행동을 지시하는 것을 볼 수 없다. 어쩌면이 추가 정보가 누군가와 생각을 불러 일으킬 수 있습니다. 감사!

+0

Google에 관해 구체적으로 이야기하고 있습니까? Google이 https를 통해서만 서비스를 제공하고 http를 시도하면 리디렉션되기 때문입니다. –

+0

사과드립니다. Google은 단순한 예제 URL이었습니다. 나는 새로운 질문을 게시하고 있습니다. 다른 질문을 사용하여 질문을 편집해야합니까? – compbrat75

+0

'.htaccess' 파일에 무엇이 있습니까? – Darren

답변

0

Google은 웹 사이트에 대해 SSL (https : //)을 사용합니다.

참조 : https://support.google.com/websearch/answer/173733?hl=en

과 : https://www.seroundtable.com/google-ssl-drops-query-data-14188.html

+0

죄송합니다. Google이 예제 URL이었습니다. SSL을 사용하지 않는 사이트에서 오류가 발생하는 모든 URL에서이 문제가 발생합니다. – compbrat75

+0

그러면 올바른 예를 들어주세요. 그리고 코드와 브라우저에서 테스트 한 후 게시하십시오. –

+0

예, 좋습니다. 그러나 설명 할 수는 없습니다. :-) –

0

아니, 구글은 보안 페이지로 리디렉션합니다.

그들은 아마도 내 https과 같은 기능을 사용합니다. 부담없이 사용하십시오.

function https(){ 
    $sv = $_SERVER; 
    if(!isset($sv['HTTPS'])){ 
    header("LOCATION:https://{$sv['SERVER_NAME']}{$sv['PHP_SELF']}"); die; 
    } 
} 
function http(){ 
    $sv = $_SERVER; 
    if(isset($sv['HTTPS'])){ 
    unset($_SERVER['HTTPS']); 
    header("LOCATION:http://{$sv['SERVER_NAME']}{$sv['PHP_SELF']}"); die; 
    } 
} 
+0

@PHPglue, unset ($ _ SERVER [ 'HTTPS']);를 사용하여 시도했습니다. 그리고 그것은 도움이되지 않았다. – compbrat75

+0

코드를 제어하지 마십시오. 클라이언트를 '위치'로 리디렉션하는 것입니다. – PHPglue

+0

죄송합니다. 내 질문을 편집했습니다. 구글은 단지 예제 URL이었고, 결코 다시는 사용하지 않을 것이다. 나는 SSL을 가지고 있지 않은 또 다른 URL을 주었지만 헤더()는 여전히 http를 https로 변경하고 SSL을 사용하지 않으므로 실패한 요청을 만든다. – compbrat75