Access-Control-Allow-Origin에서는 오리진 null이 허용되지 않습니다.
다음과 같은 코드로 weather.xsl이라는 HTML 출력을 만들기 위해 작은 xslt 파일을 만들었습니다.
<!-- DWXMLSource="http://weather.yahooapis.com/forecastrss?w=38325&u=c" -->
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
exclude-result-prefixes="yweather"
xmlns:yweather="http://xml.weather.yahoo.com/ns/rss/1.0" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#">
<xsl:output omit-xml-declaration="yes" indent="yes"/>
<xsl:strip-space elements="*"/>
<xsl:template match="/">
<img src="{/*/*/item/yweather:condition/@text}.jpg"/>
</xsl:template>
</xsl:stylesheet>
다음과 같이 html 출력을 jQuery를 사용하여 시도하는 html 파일의 div에 로드하고 싶습니다.
<div id="result">
<script type="text/javascript">
$('#result').load('weather.xsl');
</script>
</div>
하지만 다음과 같은 오류가 발생합니다.Access-Control-Allow-Origin에서는 오리진 null이 허용되지 않습니다.
xslt에 헤더를 추가하는 것에 대해 읽었지만 어떻게 해야 할지 잘 모르니 도움을 주시면 감사하겠습니다. htmlout에 로드하는 것이 이런 식으로 할 수 없다면 다른 방법에 대한 조언이 좋을 것 같습니다.
기원.null
는 로컬 파일 시스템이므로, 당신이 다음을 수행하는 HTML 페이지를 로드하고 있음을 암시합니다.load
A로 전화를 걸다file:///
URL(예: 로컬 파일 브라우저 등에서 두 번 클릭하기만 하면 됨).
대부분의 브라우저는 문서와 동일한 디렉토리에서 파일을 로드하는 것조차 허용하지 않음으로써 동일한 오리진 정책을 로컬 파일에 적용합니다. (Firefox는 이전에는 동일한 디렉토리와 하위 디렉토리를 허용했지만 더 이상 허용하지 않았습니다.)
기본적으로 로컬 리소스와 함께 ajax를 사용하는 것은 효과가 없습니다.
로컬 파일을 사용하지 않고 실제로 웹에 배포할 로컬 테스트만 하는 경우 간단한 웹 서버를 설치하고 다음을 통해 테스트합니다.http://
대신 URL.그러면 훨씬 더 정확한 보안 사진을 얻을 수 있습니다.IDE에는 IDE의 "실행"을 눌러 서버를 실행하고 파일을 제공할 수 있는 일종의 서버가 내장되어 있을 수 있습니다(직접 또는 확장자를 통해).
Chrome과 Safari는 로컬 리소스와 함께 axij를 사용하는 데 제한이 있습니다.그래서 이런 오류가 발생하는 겁니다.
Access-Control-Allow-Origin에서는 오리진 null이 허용되지 않습니다.
해결책:파이어폭스를 사용하거나 임시 서버에 데이터를 업로드합니다.그래도 Chrome을 사용하고 싶다면 아래 옵션으로 시작합니다.
--allow-file-access-from-files
Chrome에 위 매개변수를 추가하는 방법에 대한 자세한 정보:작업 표시줄에서 Chrome 아이콘을 마우스 오른쪽 단추로 클릭하고 팝업 창에서 Google Chrome을 마우스 오른쪽 단추로 클릭한 다음 속성을 클릭하고 바로 가기 탭 아래의 대상 텍스트 상자 안에 위 매개 변수를 추가합니다.아래와 같습니다.
C:\Users\XXX_USER\AppData\Local\Google\Chrome\Application\chrome.exe --allow-file-access-from-files
이것이 도움이 되기를 바랍니다!
"웹 서버 실행"이라는 대답은 상당히 어려워 보이지만 시스템에 python(기본적으로 MacOS 및 Linux 배포 환경에 설치된)이 있다면 다음과 같이 간단합니다.
python -m http.server # with python3
아니면
python -m SimpleHTTPServer # with python2
그래서 html 파일을 가지고 있다면,myfile.html
예를 들어 폴더에mydir
, 당신이 해야 할 일은:
cd /path/to/mydir
python -m http.server # or the python2 alternative above
그런 다음 브라우저를 가리킵니다.
http://localhost:8000/myfile.html
그리고 당신은 끝!웹 보안을 비활성화하거나 로컬 파일을 허용하거나 명령줄 옵션을 사용하여 브라우저를 재시작하지 않고도 모든 브라우저에서 작동합니다.
이 SO 소스에 따르면 https://stackoverflow.com/a/14671362/1743693, 이 문제는 이제 다음 jQuery 명령을 사용하여 부분적으로 해결됩니다.
<script>
$.support.cors = true;
</script>
IE10.0.9200에서 사용해 보았는데 바로 작동이 되었습니다(jquery-1.9.0.js 사용).
크롬 28.0.1500.95 - 이 지침이 작동하지 않습니다 (위 링크의 댓글에 David이 불만을 제기함에 따라 이 문제가 전체적으로 발생합니다).
파일에서 파일 액세스를 허용하는 크롬을 실행하는 것은 (위의 Maistora의 주장처럼) 제게 효과가 없었습니다.
Gokhan의 솔루션을 사용하기 위해 약간의 정보를 추가합니다.
--allow-file-access-from-files
이제 Target 텍스트에 위 텍스트를 추가하고 공백을 추가하면 됩니다. 위 속성을 추가한 후 크롬 브라우저의 모든 인스턴스를 닫아야 합니다.이제 이 속성을 추가한 아이콘으로 크롬을 다시 시작합니다.그것은 모두에게 효과가 있을 것입니다.
로컬 html 파일에서 서버에 XHR 요청을 할 수 있는 솔루션을 찾고 있었는데 Chrome과 PHP를 이용한 솔루션을 찾았습니다. (no Jquery)
자바스크립트:
var x = new XMLHttpRequest();
if(x) x.onreadystatechange=function(){
if (x.readyState === 4 && x.status===200){
console.log(x.responseText); //Success
}else{
console.log(x); //Failed
}
};
x.open(GET, 'http://example.com/', true);
x.withCredentials = true;
x.send();
의 요청 마이 크롬Origin: null
내 PHP 응답 헤더('null'은 문자열입니다).HTTP_REFERERER는 원격 서버에서 다른 서버로 교차 오리진을 허용합니다.
header('Access-Control-Allow-Origin: '.(trim($_SERVER['HTTP_REFERER'],'/')?:'null'),true);
header('Access-Control-Allow-Credentials:true',true);
서버에 성공적으로 연결할 수 있었습니다.자격 증명 헤더를 무시할 수 있지만 아파치의 경우에는 이 방법이 가능합니다.AuthType Basic
가능한
FF와 오페라와의 호환성을 테스트했는데 다음과 같은 경우에 효과가 있습니다.
LAN IP(192.168.0.x) 에서 VM 의 WAN() IP:port
VM LAN IP에서 원격 서버 도메인 이름으로 다시 전환합니다.
현지에서. VM LAN IP / VM WAN IP:port HTML ,
현지에서.HTML 파일을 원격 서버 도메인 이름으로 만듭니다.
뭐 이런 거.
로컬 Javascript 파일을 로드할 수 있습니다(아래 트리에 있음).file:/
source page)에서 source tag를 사용합니다.
<script src="my_data.js"></script>
입력을 자바스크립트로 인코딩하는 경우, 이 경우와 같습니다.
mydata.js:
$xsl_text = "<xsl:stylesheet version="1.0" + ....
(json의 경우 이 방법이 더 쉽습니다) 그러면 원하는 대로 사용할 수 있는 자바스크립트 글로벌 변수에 '데이터'가 있습니다.
Java Spring을 사용하여 웹 서비스를 실행하려면 다음을 추가해야 합니다.@ServletComponentScan
바로 위에@SpringBootApplication
자동으로 생성된 YouAppApplication.java 파일(메인() 기능이 있는 파일)에서 다음과 같은 구현으로 클래스를 만듭니다.
@WebFilter("/*")
public class AddResponseHeaderFilter implements Filter {
@Override
public void init(FilterConfig filterConfig) throws ServletException {
// ...
}
@Override
public void doFilter(ServletRequest servletRequest,
ServletResponse servletResponse,
FilterChain filterChain) throws IOException, ServletException {
HttpServletResponse httpServletResponse = (HttpServletResponse) servletResponse;
httpServletResponse.addHeader("Access-Control-Allow-Origin", "null");
httpServletResponse.addHeader("Access-Control-Allow-Credentials", "true");
filterChain.doFilter(servletRequest, servletResponse);
}
@Override
public void destroy() {
// ...
}
}
이 클래스가 Filter를 구현하고 다음을 가지면 클래스의 다른 이름을 선택할 수 있습니다.@WebFilter
주석은 다음과 같은 다른 와일드카드를 제공할 수도 있습니다./*
따라서 이 필터가 모든 엔드포인트에 적용되는 것은 아닙니다.
@Louis Loudog Trottier다를 ....withCredentials = true;
이것이 작동하도록 Ajax 요청을 생성할 때.
언급URL : https://stackoverflow.com/questions/8456538/origin-null-is-not-allowed-by-access-control-allow-origin
'itsource' 카테고리의 다른 글
HSQL 데이터베이스 사용자에게 권한이 없거나 개체를 찾을 수 없음 오류가 발생했습니다. (0) | 2023.10.29 |
---|---|
그룹의 SQL 선택 멤버 (0) | 2023.10.29 |
PowerShell로 특정 시간 이상 된 파일인지 확인하려면 어떻게 해야 합니까? (0) | 2023.10.29 |
엑셀 시트가 TFS에서 생성되었다는 것을 잊게 하려면 어떻게 해야 합니까? (0) | 2023.10.24 |
쿼리 내에서 DML 작업을 수행할 수 없습니다. (0) | 2023.10.24 |