programing

출발지가 Access-Control-Allow-Origin에서 허용되지 않습니다.

nicescript 2022. 9. 30. 13:29
반응형

출발지가 Access-Control-Allow-Origin에서 허용되지 않습니다.

지금 만들고 있어요.Ajax.requestSencha Touch 2 어플리케이션(PhoneGap으로 래핑됨)의 리모트 PHP 서버에 접속합니다.

서버로부터의 응답은 다음과 같습니다.

XMLHttpRequest는 http://nqatalog.negroesquisso.pt/login.php을 로드할 수 없습니다.기원.http://localhost:8888액세스 제어 허가 발신지

어떻게 하면 이 문제를 해결할 수 있을까요?

나는 얼마 전에 이 문제에 관한 기사를 썼다, Cross Domain AJAX.

응답 서버를 제어할 수 있는 가장 쉬운 방법은 다음 항목에 대한 응답 헤더를 추가하는 것입니다.

Access-Control-Allow-Origin: *

그러면 교차 도메인 Ajax가 허용됩니다.PHP에서는 다음과 같이 응답을 수정할 수 있습니다.

<?php header('Access-Control-Allow-Origin: *'); ?>

냥렇 the the you 、 you 、 。Header set Access-Control-Allow-Origin *Apache 구성 또는 htaccess 파일의 설정을 지정합니다.

이로 인해 사실상 CORS 보호가 비활성화되어 사용자가 공격에 노출될 가능성이 높다는 점에 유의하시기 바랍니다.와일드카드를 사용해야 하는지 잘 모를 경우 와일드카드를 사용하지 말고 특정 도메인에 화이트리스트를 작성해야 합니다.

<?php header('Access-Control-Allow-Origin: http://example.com') ?>

서버를 제어할 수 없는 경우 Chrome 런처에 다음 인수를 추가할 수 있습니다.--disable-web-security.

일반적인 웹 서핑에는 사용하지 않습니다.자세한 것은, 다음의 투고를 참조해 주세요.Chrome에서 동일한 오리진 정책을 사용하지 않도록 설정합니다.

Phonegap을 사용하여 실제로 애플리케이션을 빌드하고 디바이스에 로드하면 문제가 되지 않습니다.

Apache를 사용하는 경우 다음을 추가하십시오.

<ifModule mod_headers.c>
    Header set Access-Control-Allow-Origin: *
</ifModule>

를 참조해 주세요.이것에 의해, Web 서버로부터의 모든 응답은, 인터넷의 다른 사이트에서 액세스 할 수 있게 됩니다.할 수 는, 「」를 할 수 .*URL 신신송 、 [ URL 。

Header set Access-Control-Allow-Origin: http://my.origin.host

ASP가 있는 경우.NET/ASPNET MVC 어플리케이션에서는 Web.config 파일을 사용하여 다음 헤더를 포함할 수 있습니다.

<system.webServer>
  ...

    <httpProtocol>
        <customHeaders>
            <!-- Enable Cross Domain AJAX calls -->
            <remove name="Access-Control-Allow-Origin" />
            <add name="Access-Control-Allow-Origin" value="*" />
        </customHeaders>
    </httpProtocol>
</system.webServer>

ASP를 사용하여 동일한 문제를 해결하려고 할 때 가장 먼저 떠오른 질문/답변입니다.데이터의 소스로서 NET MVC를 사용합니다.이것이 PHP 문제를 해결하지 못한다는 것은 알지만, 충분히 가치가 있는 관련성이 있습니다.

ASP를 사용하고 있습니다.NET MVC그렉 브랜트의 블로그 투고는 나에게 효과가 있었다.최종적으로 Atribute를 작성합니다.[HttpHeaderAttribute("Access-Control-Allow-Origin", "*")]이치노

예를 들어 다음과 같습니다.

public class HttpHeaderAttribute : ActionFilterAttribute
{
    public string Name { get; set; }
    public string Value { get; set; }
    public HttpHeaderAttribute(string name, string value)
    {
        Name = name;
        Value = value;
    }

    public override void OnResultExecuted(ResultExecutedContext filterContext)
    {
        filterContext.HttpContext.Response.AppendHeader(Name, Value);
        base.OnResultExecuted(filterContext);
    }
}

그 후, 다음과 같이 사용합니다.

[HttpHeaderAttribute("Access-Control-Allow-Origin", "*")]
public ActionResult MyVeryAvailableAction(string id)
{
    return Json( "Some public result" );
}

Matt Mombrea는 서버 측에서는 정확하므로 화이트리스트 거부라는 다른 문제가 발생할 수 있습니다.

전화 간격을 설정해야 합니다.plist. (이전 버전의 전화 갭을 사용하고 있습니다)

cordova의 경우 이름 및 디렉토리가 변경될 수 있습니다.하지만 스텝은 거의 같아야 합니다.

먼저 Supporting files > PhoneGap.plist 순으로 선택합니다.

여기에 이미지 설명 입력

[외부 호스트(External Hosts)]아래에 있는

디버깅 목적으로만 * 를 사용하고 있는 경우, 「http://nqatalog.negroesquisso.pt」의 값을 가지는 엔트리를 추가합니다.

여기에 이미지 설명 입력

이는 레퍼러의 'www' 버전과 'non-www' 버전 모두에 대해 예외를 두어야 하는 사용자에게 유용합니다.

 $referrer = $_SERVER['HTTP_REFERER'];
 $parts = parse_url($referrer);
 $domain = $parts['host'];

 if($domain == 'google.com')
 {
         header('Access-Control-Allow-Origin: http://google.com');
 }
 else if($domain == 'www.google.com')
 {
         header('Access-Control-Allow-Origin: http://www.google.com');
 }

때 이 가 발생할 을 Chrome Extension에 하십시오.manifest.json권한 블록, 예:

"permissions": [
    "https://itunes.apple.com/"
]

이 문제에 대한 간단한 해결책을 제시하겠습니다.내 경우 서버에 액세스할 수 없습니다.이 경우 Google Chrome 브라우저에서 보안 정책을 변경하여 Access-Control-Allow-Origin을 허용할 수 있습니다.이것은 매우 간단합니다.

  1. Chrome 브라우저 바로 가기 만들기
  2. 숏컷 아이콘 우클릭 -> 속성 -> 바로가기 -> 타깃

인 단단 simple simple simple"C:\Program Files\Google\Chrome\Application\chrome.exe" --allow-file-access-from-files --disable-web-security.

장소는 다를 수 있습니다.이제 바로 가기를 클릭하여 Chrome을 엽니다.

다양한 API를 사용할 때 몇 번 접한 적이 있습니다.빠른 수정 방법은 문자열 끝에 "&callback=?"을 추가하는 것입니다.ampersand가 문자 코드일 때도 있고, "?callback=?"일 때도 있습니다(Forecast.io API Usage with jQuery 참조).

이것은, 같은 발신기지 정책에 의한 것입니다.자세한 내용은 Mozilla Developer Network 또는 Wikipedia를 참조하십시오.

예에서는 합니다.http://nqatalog.negroesquisso.pt/login.php「」의 nqatalog.negroesquisso.pt 아니라, 이에요.localhost.

apache 아래에 있는 경우 다음 내용이 포함된 .htaccess 파일을 디렉터리에 추가하십시오.

Header set Access-Control-Allow-Origin: *

Header set Access-Control-Allow-Headers: content-type

Header set Access-Control-Allow-Methods: *

Ruby on Rails에서는 컨트롤러에서 다음을 수행할 수 있습니다.

headers['Access-Control-Allow-Origin'] = '*'

이것을 Angular.js 로 취득했을 경우는, 다음과 같이 포토 번호를 이스케이프 해 주세요.

var Project = $resource(
    'http://localhost\\:5648/api/...', {'a':'b'}, {
        update: { method: 'PUT' }
    }
);

자세한 내용은 여기를 참조하십시오.

시킬 수 .Access-Control-Allow-Origin: *HTTP OPTIONS 답 http http http 。

Chrome에서 이 확장자를 사용합니다.Mozilla에 있는 경우 이 답변을 확인하십시오.

우리는 크롬으로 테스트된 폰갭 어플리케이션에도 같은 문제가 있습니다.크롬을 열기 전에 아래 배치 파일을 매일 사용하는 윈도 머신 1대.이 작업을 실행하기 전에 작업 관리자에서 모든 Chrome 인스턴스를 지우거나 백그라운드에서 실행하지 않도록 chrome을 선택할 수 있습니다.

배치: (cmd 사용)

cd D:\Program Files (x86)\Google\Chrome\Application\chrome.exe --disable-web-security

인 루비 시나트라

response['Access-Control-Allow-Origin'] = '*' 

모두를 위해 또는

response['Access-Control-Allow-Origin'] = 'http://yourdomain.name' 

요청을 받으면 다음 작업을 수행할 수 있습니다.

var origin = (req.headers.origin || "*");

그런 식으로 응답해야 할 때 보다 더 많은 시간을 할애할 수 있습니다.

res.writeHead(
    206,
    {
        'Access-Control-Allow-Credentials': true,
        'Access-Control-Allow-Origin': origin,
    }
);

언급URL : https://stackoverflow.com/questions/10143093/origin-is-not-allowed-by-access-control-allow-origin

반응형