source

잘못된 레일 교차 출발지 요청

ittop 2023. 8. 15. 11:47
반응형

잘못된 레일 교차 출발지 요청

나는 있습니다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

반응형