JavaScript 프로젝트 URL을 사용할 수 없습니다.

PHPz
풀어 주다: 2023-05-09 22:11:37
원래의
630명이 탐색했습니다.

현대 웹 개발에서 JavaScript는 매우 중요한 언어입니다. 이는 대화형 및 동적 페이지를 제공할 수 있습니다. 하지만 실제 개발을 하다보면 종종 문제에 부딪히게 되는데, 그 중 하나가 자바스크립트 프로젝트의 URL을 사용할 수 없는 문제입니다.

이 문제는 실제로 매우 일반적입니다. JavaScript 프로젝트에서 해당 URL을 사용하려고 하면 다음 오류 메시지가 나타날 수 있습니다.

XMLHttpRequest cannot load http://example.com/resource. No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://localhost:3000' is therefore not allowed access.
로그인 후 복사

이는 브라우저가 JavaScript 프로젝트의 서버에 대한 리소스 요청을 거부했음을 의미합니다. 이는 크로스 사이트 요청 공격(CSRF)을 방지하기 위한 것입니다.

그렇다면 이 문제를 어떻게 해결해야 할까요? 다음은 몇 가지 해결 방법입니다.

1. 프록시 서버 사용

프록시 서버는 도메인 간 요청 문제를 해결할 수 있습니다. JavaScript 프로젝트에서 프록시 서버를 브리지로 사용하여 대상 리소스를 요청할 수 있습니다. 예를 들어, http-proxy-middleware 미들웨어를 사용하여 프록시 서버를 구현할 수 있습니다.

이 미들웨어는 Node.js의 백엔드에 배포한 다음 JavaScript 프로젝트에서 사용할 수 있습니다.

// 在JavaScript工程中使用
app.use('/api', proxy({ target: 'http://example.com', changeOrigin: true }));
로그인 후 복사

이 코드는 JavaScript 프로젝트에서 /api로 시작하는 모든 URL 요청을 전달합니다. >http://example.com. 프록시 서버는 백엔드에 배포되므로 브라우저가 이를 가로채지 않습니다. /api开头的url请求转发到http://example.com上。因为是在后端部署代理服务器,所以不会被浏览器拦截。

2. 添加CORS header

CORS(Cross-Origin Resource Sharing)是一种跨域资源共享机制。如果服务器支持CORS,它会在响应头中加入Access-Control-Allow-Origin这个header,可以指定允许访问的源列表。

如果你有权限修改服务器端的代码,可以在响应头中添加这个header:

Access-Control-Allow-Origin: http://localhost:3000
로그인 후 복사

这样,浏览器就不会拦截JavaScript工程的请求了。

3. 使用JSONP

JSONP是一种允许跨域请求的技术。它的原理是利用script元素的src属性不受同源策略限制,可以加载来自其他域名的JavaScript文件。

如果你无法修改服务器端的代码,或者服务器不支持CORS,可以尝试使用JSONP。具体方法是,在JavaScript工程中添加如下代码:

var script = document.createElement('script');
script.type = 'text/javascript';
script.src = 'http://example.com/resource?callback=onResponse';
document.head.appendChild(script);

function onResponse(data) {
  console.log(data);
}
로그인 후 복사

这个例子中,我们在JavaScript工程中添加了一个script元素,并将src属性设置为目标资源的url。我们将callback

2. CORS 헤더 추가

CORS(Cross-Origin Resource Sharing)는 도메인 간 리소스 공유 메커니즘입니다. 서버가 CORS를 지원하는 경우 Access-Control-Allow-Origin 헤더를 응답 헤더에 추가하여 액세스가 허용되는 소스 목록을 지정할 수 있습니다. 🎜🎜서버측 코드를 수정할 수 있는 권한이 있는 경우 응답 헤더에 다음 헤더를 추가할 수 있습니다.🎜rrreee🎜이렇게 하면 브라우저가 JavaScript 프로젝트 요청을 가로채지 않습니다. 🎜🎜3. JSONP를 사용하세요🎜🎜JSONP는 도메인 간 요청을 허용하는 기술입니다. 그 원칙은 동일 출처 정책에 의해 제한되지 않도록 script 요소의 src 속성을 사용하는 것이며, 다른 도메인 이름에서 JavaScript 파일을 로드할 수 있습니다. 🎜🎜서버 측 코드를 수정할 수 없거나 서버가 CORS를 지원하지 않는 경우 JSONP를 사용해 볼 수 있습니다. 구체적인 방법은 JavaScript 프로젝트에 다음 코드를 추가하는 것입니다. 🎜rrreee🎜이 예에서는 JavaScript 프로젝트에 스크립트 요소를 추가하고 src 속성을 대상 리소스의 URL로 설정했습니다. callback 매개변수를 콜백 함수로 설정했는데, 이 함수는 대상 리소스가 로드된 후에 호출됩니다. 대상 리소스에서 반환된 데이터는 콜백 함수에서 처리될 수 있습니다. 🎜🎜요약하자면, JavaScript 프로젝트에서 URL을 사용할 수 없는 경우 위의 세 가지 솔루션 중 하나를 사용할 수 있습니다: 프록시 서버 사용, CORS 헤더 추가 또는 JSONP 사용. 다양한 상황에 따라 다양한 솔루션을 선택하면 이 문제를 원활하게 해결하는 데 도움이 될 수 있습니다. 🎜

위 내용은 JavaScript 프로젝트 URL을 사용할 수 없습니다.의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿