잘못된 레일 교차 출발지 요청
나는 있습니다remote: true
내 레일즈 앱의 페이지에서 링크를 클릭합니다..js
동일한 페이지의 버전을 선택한 후 스크립트를 실행하여 제자리에 있는 페이지 내용을 업데이트합니다.
그것은 잘 작동했지만 어제부터 나는 지금 그것을 받습니다.Security warning: an embedded <script> tag on another site requested protected JavaScript. If you know what you're doing, go ahead and disable forgery protection on this action to permit cross-origin JavaScript embedding.
링크를 클릭할 때마다 표시됩니다.
어떻게 하면 막을 수 있을까요?
페이지 조각을 렌더링하는 컨트롤러에 추가합니다.
class FooController < ApplicationController
protect_from_forgery except: :index
어디에index
이 보호를 건너뛸 작업의 이름입니다.
교차 오리진 정책
오류가 발생한 것은 크로스 오리진 정책이라고 하는 것 때문입니다.페이지가 다른 도메인의 스크립트를 실행할 수 없는 모든 브라우저에 있는 표준입니다.이 문제를 해결하는 방법은 다른 도메인에서 컨텐츠를 실행할 수 있도록 허용하는 http 요청에 헤더를 추가하는 것입니다.
위키백과에는 다음과 같은 설명이 있습니다.
동일한 오리진 정책을 완화하기 위한 두 번째 기술은 교차 오리진 리소스 공유라는 이름으로 표준화됩니다.이 표준은 새 오리진 요청 헤더와 새 Access-Control-Allow-Origin 응답 헤더로 HTTP를 확장합니다.서버는 헤더를 사용하여 파일을 요청할 수 있는 오리진을 명시적으로 나열하거나 와일드카드를 사용하여 모든 사이트에서 파일을 요청할 수 있습니다.Firefox 3.5, Safari 4 및 Internet Explorer 10과 같은 브라우저는 이 헤더를 사용하여 동일한 오리진 정책에 의해 금지되었을 XMLHttpRequest와 교차 오리진 HTTP 요청을 허용합니다.
http://en.wikipedia.org/wiki/Same-origin_policy
모든 위조 방지/인증 토큰 유효성 검사를 건너뛰는 대신 "크로스 오리진" 검사를 건너뛸 수 있습니다.
class FooController < ApplicationController
skip_after_action :verify_same_origin_request
이걸 건너뛸 필요가 있는 이유는 레일즈의verify_same_origin_request
는 실제로 오리진을 확인하지 않습니다.대신 (1) GET 요청이고 (2) XHR 요청이 아닙니다.사용 사례가 이 두 가지를 모두 충족하므로 오류가 발생합니다.
언급URL : https://stackoverflow.com/questions/29310187/rails-invalidcrossoriginrequest
'source' 카테고리의 다른 글
Spring WebServiceTemplate에서 시간 초과를 설정하는 방법 (0) | 2023.08.20 |
---|---|
java.lang을 가져오는 중입니다.ClassNotFoundException: javax.servlet입니다.Junit의 서블릿 컨텍스트 (0) | 2023.08.20 |
Feign 클라이언트 + Spring Cloud(Brixton RC2)에서 동적 값을 가진 @Headers 사용 (0) | 2023.08.15 |
요청에 대한 응답이 수신되지 않으면 어떻게 됩니까?재시도가 보입니다. (0) | 2023.08.15 |
연결이 로컬 호스트인지 자바스크립트로 확인하는 방법은 무엇입니까? (0) | 2023.08.15 |