>  기사  >  php教程  >  Ajax가 도메인 간 데이터를 PHP 프로그램에 게시하면 PHP 프로그램은 항상 두 번 실행됩니다.

Ajax가 도메인 간 데이터를 PHP 프로그램에 게시하면 PHP 프로그램은 항상 두 번 실행됩니다.

WBOY
WBOY원래의
2016-08-08 08:49:47953검색

php 프로그램이 IIS7에 배포되었습니다. ajax로 데이터를 제출할 때 두 가지 문제가 발생했습니다. 하나는 도메인 간 문제이고 PHP 프로그램은 항상 두 번 실행됩니다.

첫 번째 문제에 대한 해결책은 Baidu에서 제공합니다. 다음 코드 줄을 추가하세요.

header('Access-Control-Allow-Origin:*');

header("Access-Control-Allow-Headers: x-requested-with,content-type");

header('액세스 제어 허용 방법: OPTIONS,POST,GET');

실제로 코드를 추가하지 않고도 IIS에서 직접 설정할 수도 있습니다. 사이트를 직접 선택한 다음 오른쪽에 있는 http 응답 헤더를 클릭하고 그 안에서 직접 구성하면 됩니다. 사진과 같이:

두 번째 질문은 바이두에서 결과가 나오지 않아서 FQ를 하고 구글을 이용해서 단번에 이해한 뒤 힌트를 따라가며 알아냈어요.

CORS .net 크로스 도메인 솔루션에서는 이렇게 소개하고 있습니다(http://jingyan.baidu.com/article/03b2f78c190ad25ea237ae33.html)

동일한 요청에는 동일한 요청 주소를 가진 두 가지 메서드가 필요합니다. 하나는 "POST"로 표시되고 다른 하나는 "POST"로 표시된 메서드입니다. 아무 논리나 실행하면 반환 값이 무효가 됩니다(사실 OPTIONS 요청은 브라우저의 확인입니다. 매개변수가 포함된 POST 요청을 보낼 때 브라우저는 먼저 OPTIONS 요청을 보내고 요청 헤더 정보와 응답을 확인합니다. 헤더 정보는 실제로 POST 요청을 시작하기 전에 일관됩니다. )

패킷 캡처 결과 브라우저가 OPTIONS service/service.php HTTP/1.1 및 POST /service/service.php HTTP/1.1이라는 두 가지 요청을 생성한 것으로 나타났습니다.

원래 글에서 언급한 대로 OPTIONS 요청 시 void를 직접 반환하고 싶었는데, php 설정을 보면 액션을 직접 제한할 수 있게 되어 있습니다. 나는 그것을 시도했고 작동했습니다. 이제 ajax는 도메인 간이며 PHP 프로그램은 한 번만 실행됩니다.

IIS의 구성 방법은 다음과 같습니다. PHP 프로그램 사이트를 찾아 서버 설정을 선택할 수도 있으며 오른쪽의 핸들러 매핑을 클릭하고 PHP를 찾은 다음 편집을 클릭하고 팝업 대화 상자에서 요청 제한을 클릭합니다. 을 선택한 다음 Predicate를 선택하고 아래 Predicate를 클릭합니다. 먼저 프롬프트에 따라 GET 및 POST를 입력합니다. 문제를 해결하기 위해 이전에는 기본 옵션(모든 조건자)을 사용했기 때문에 이 문제가 발생했습니다. 사진과 같이:

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.