[JQUERY] 없음 '액세스 제어는 - - 원산지를 허용'헤더는 요청 된 자원에 존재합니다. 원산지는 '...'때문에 접근이 허용되지 않는다
JQUERY없음 '액세스 제어는 - - 원산지를 허용'헤더는 요청 된 자원에 존재합니다. 원산지는 '...'때문에 접근이 허용되지 않는다
해결법
-
1.사용 addHeader 대신 setHeader 방법을 사용하여,
사용 addHeader 대신 setHeader 방법을 사용하여,
response.addHeader("Access-Control-Allow-Origin", "*");
* 위의 줄을 모든 도메인에 대한 액세스를 허용합니다.
특정 도메인에 대해서만 액세스를 허용의 경우 :
response.addHeader("Access-Control-Allow-Origin", "http://www.example.com");
이 블로그 게시물을 확인하십시오.
-
2.자바 스크립트 코드가 www.example.com에서 페이지에서, 의미, 동일 출처 정책에 의해 제한됩니다 만 정확히 www.example.com,이 경우 정확히 동일한 도메인에있는 서비스 (AJAX) 요청을 할 수 있습니다 (하지 example.com - www를 - 또는 whatever.example.com).
자바 스크립트 코드가 www.example.com에서 페이지에서, 의미, 동일 출처 정책에 의해 제한됩니다 만 정확히 www.example.com,이 경우 정확히 동일한 도메인에있는 서비스 (AJAX) 요청을 할 수 있습니다 (하지 example.com - www를 - 또는 whatever.example.com).
귀하의 경우에는, 당신의 Ajax 코드는 http://www.wordicious.com에 위치한 페이지에서 http://wordicious.com에서 서비스에 도달하기 위해 노력하고있다.
매우 유사하지만, 그들은 동일한 도메인 아니다. 그들은 동일한 도메인에없는 경우 대상의 respose가있는 액세스 제어 - 허용 - 원산지 헤더를 포함한다면, 요청은 성공합니다.
http://wordicious.com에서 페이지 / 서비스가 현재와 같은 헤더로 구성되지 않았다로서, 해당 오류 메시지가 표시됩니다.
AS는 원점 (자바 스크립트와 페이지에 위치)와 (자바 스크립트가 도달하려고하는) 대상 도메인이 정확히 동일해야했다.
귀하의 경우 오타처럼 보인다. http://wordicious.com 및 http://www.wordicious.com 것 같은데 실제로는 동일한 서버 / 도메인입니다. 당신 아약스 코드 요청 페이지 / http://www.wordicious.com하지 http://wordicious.com을 서비스합니다 그래서 해결하려면, 동일 대상 및 원점을 입력합니다. (어쩌면 도메인 않고, '/login.php'처럼, 상대적으로 대상 URL을 배치).
문제는이 질문의 같은 오타가 아닌 것 같다 경우,이 솔루션은 대상 도메인에 액세스 제어 - 허용 - 원산지를 추가하는 것입니다. 추가하려면 해당 주소 뒤에 서버 / 언어, 물론, 따라 달라집니다. 때때로 도구에서 구성 변수는 트릭을 할 것입니다. 다른 시간 당신은 코드를 통해 직접 헤더를 추가해야합니다.
-
3..NET 서버의 web.config이를 구성 할 수 있습니다를 들어 아래와 같이
.NET 서버의 web.config이를 구성 할 수 있습니다를 들어 아래와 같이
<system.webServer> <httpProtocol> <customHeaders> <add name="Access-Control-Allow-Origin" value="your_clientside_websiteurl" /> </customHeaders> </httpProtocol> </system.webServer>
서버 도메인이 http://live.makemypublication.com하고 클라이언트가 아래와 같이 서버의 web.config에서 구성하십시오 http://www.makemypublication.com 인 경우 예를 들어, 말을 할 수 있습니다
<system.webServer> <httpProtocol> <customHeaders> <add name="Access-Control-Allow-Origin" value="http://www.makemypublication.com" /> </customHeaders> </httpProtocol> </system.webServer>
-
4.당신은 브라우저에서이 오류 메시지가 나타나면 :
당신은 브라우저에서이 오류 메시지가 나타나면 :
당신이 당신의 통제를 벗어 원격 서버에 아약스 POST / GET 요청을하려고 할 때,이 간단한 수정에 대해 잊지하시기 바랍니다 :
<?php header('Access-Control-Allow-Origin: *'); ?>
당신이 정말로 당신은 단지 Ajax 요청을 자바 스크립트를 사용하는 경우 특히, 무엇을해야하는지, 쿼리를 받아 원격 서버를 통해 보내 내부 프록시입니다.
먼저 자바 스크립트에서, 자신의 서버에 Ajax 호출을, 같은 :
$.ajax({ url: yourserver.com/controller/proxy.php, async:false, type: "POST", dataType: "json", data: data, success: function (result) { JSON.parse(result); }, error: function (xhr, ajaxOptions, thrownError) { console.log(xhr); } });
그런 다음 POST 데이터를 포장하고 매개 변수로 원격 URL 서버를 추가하는 간단한 PHP 파일이라고 proxy.php을 만들 수 있습니다. 나는 익스 피디아 호텔 검색 API를 사용하여이 문제를 우회 당신이 어떻게의 예를 제공합니다 :
if (isset($_POST)) { $apiKey = $_POST['apiKey']; $cid = $_POST['cid']; $minorRev = 99; $url = 'http://api.ean.com/ean-services/rs/hotel/v3/list?' . 'cid='. $cid . '&' . 'minorRev=' . $minorRev . '&' . 'apiKey=' . $apiKey; echo json_encode(file_get_contents($url)); }
이렇게함으로써 :
echo json_encode(file_get_contents($url));
당신은 동일한 쿼리를 수행하지만 서버 측을 한 후, 그것을해야 잘 작동하고 있습니다.
-
5.당신은 당신의 PHP 페이지 "login.php"의 시작이를 추가해야
당신은 당신의 PHP 페이지 "login.php"의 시작이를 추가해야
<?php header('Access-Control-Allow-Origin: *'); ?>
-
6.당신은 옵션 방법 응답의 헤더 키 / 값을 넣어해야합니다. 예를 들어, 당신은 http://mydomain.com/myresource에서 자원이있는 경우 다음, 서버 코드에서 당신은 쓰기
당신은 옵션 방법 응답의 헤더 키 / 값을 넣어해야합니다. 예를 들어, 당신은 http://mydomain.com/myresource에서 자원이있는 경우 다음, 서버 코드에서 당신은 쓰기
//response handler void handleRequest(Request request, Response response) { if(request.method == "OPTIONS") { response.setHeader("Access-Control-Allow-Origin","http://clientDomain.com") response.setHeader("Access-Control-Allow-Methods", "GET,POST,PUT,DELETE,OPTIONS"); response.setHeader("Access-Control-Allow-Headers", "Content-Type"); } }
-
7.다음과 같은 추가 매개 변수를 추가하여 기본적으로 ALTER API 헤더 응답.
다음과 같은 추가 매개 변수를 추가하여 기본적으로 ALTER API 헤더 응답.
액세스 제어 - 허용 - 자격 증명 : 사실
액세스 제어 - 허용 - 원산지 : *
이 보안에 관해서 그러나 이것은 좋은 해결책이 아니다
-
8.해결 방법은 당신의 '소스'호스트에서 실행 및 피들러 같은 대상 서버에 전달 역방향 프록시를 사용하는 것입니다 :
해결 방법은 당신의 '소스'호스트에서 실행 및 피들러 같은 대상 서버에 전달 역방향 프록시를 사용하는 것입니다 :
여기에 링크 : http://docs.telerik.com/fiddler/configure-fiddler/tasks/usefiddlerasreverseproxy
또는 아파치 리버스 프록시 ...
-
9.당신에게 PHP 파일 또는 메인 컨트롤러를이 추가
당신에게 PHP 파일 또는 메인 컨트롤러를이 추가
header("Access-Control-Allow-Origin: http://localhost:9000");
-
10.httpd.conf 파일에서 항목을 아래로 해결
httpd.conf 파일에서 항목을 아래로 해결
#CORS Issue Header set X-Content-Type-Options "nosniff" Header always set Access-Control-Max-Age 1728000 Header always set Access-Control-Allow-Origin: "*" Header always set Access-Control-Allow-Methods: "GET,POST,OPTIONS,DELETE,PUT,PATCH" Header always set Access-Control-Allow-Headers: "DNT,X-CustomHeader,Keep-Alive,Content-Type,Origin,Authentication,Authorization,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control" Header always set Access-Control-Allow-Credentials true #CORS REWRITE RewriteEngine On RewriteCond %{REQUEST_METHOD} OPTIONS #RewriteRule ^(.*)$ $1 [R=200,L] RewriteRule ^(.*)$ $1 [R=200,L,E=HTTP_ORIGIN:%{HTTP:ORIGIN}]]
-
11.요청 헤더를 설정하는 자바 스크립트 XMLHttpRequest 객체에서 사용되는 기능을 찾아주세요.
요청 헤더를 설정하는 자바 스크립트 XMLHttpRequest 객체에서 사용되는 기능을 찾아주세요.
... xmlHttp.setRequestHeader("Access-Control-Allow-Origin", "http://www.example.com"); ... </script>
참조 : https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest/setRequestHeader
from https://stackoverflow.com/questions/20433655/no-access-control-allow-origin-header-is-present-on-the-requested-resource-or by cc-by-sa and MIT license
'JQUERY' 카테고리의 다른 글
[JQUERY] 토글 쇼 / 버튼 숨기기 DIV? (0) | 2020.10.05 |
---|---|
[JQUERY] 배열에 고유 한 값을 얻는 방법 (0) | 2020.10.05 |
[JQUERY] JQuery와의 URL의 마지막 부분 (0) | 2020.10.05 |
[JQUERY] 어떻게 방울을 업로드 자바 스크립트를 할 수 있습니까? (0) | 2020.10.05 |
[JQUERY] 어떻게 jQuery를 $ 아약스 오류 응답 텍스트를 얻으려면? (0) | 2020.10.05 |