2016-11-10 4 views
0

내 웹 사이트에서 원격 서버로 POST 요청을 보내려고하지만 CORS 문제가 발생합니다.요청 헤더 필드 프리 플라이트 응답에서 Access-Control-Allow-Headers에서 액세스 제어 요청 방법을 허용하지 않습니다.

인터넷에서 검색했지만 내 특정 문제에 대한 해결책을 찾지 못했습니다.

은 XMLHttpRequest 수 없습니다 : 내 콘솔에서 오류가 발생

@app.route(SETTINGS_NAMESPACE + '/<string:product_name>', methods=['POST', 'OPTIONS']) 
@graphs.time_method() 

def get_settings(product_name): 
    settings_data = helper.param_validate_and_extract(request, None, required=True, type=dict, post_data=True) 
    settings_data = json.dumps(settings_data) 
    response = self._get_settings(product_name, settings_data) 
    return output_json(response, requests.codes.ok, headers = { 
     'Access-Control-Allow-Origin': '*', 
     'Access-Control-Allow-Methods': 'POST' 
    }) 

이있는 백엔드 측면에서

var params = { 
    url: url, 
    method: 'POST', 
    data: JSON.stringify(data), 
    contentType: 'json', 
    headers: { 
     'Access-Control-Request-Origin': '*', 
     'Access-Control-Request-Methods': 'POST' 
    } 

파이썬에서 내 코드입니다 : 이 내 아약스 요청 PARAMS입니다 로드 [ http://path-to-my-server]. 요청 헤더 필드는 액세스 제어-요청-방법은 프리 플라이트 응답 액세스 제어 - 허용 - 헤더에 의해 허용되지 않습니다

나는 또한 'Access-Control-Request-Headers'을 추가 할 수 있습니다 통지를했다하지만 필요하다면 나는 확실하지 않았다 그리고 더 많은 문제를 일으켜 제거했습니다.

누구든지이 문제를 해결하는 방법을 알고 있습니까?

+2

귀하의 아약스 요청이 서버 만이 그 헤더를 보냅니다 작동합니다. – adeneo

+0

고마워, 효과가 있었다. 답변을 게시하고 승인 해 드리겠습니다. –

답변

1

ajax 요청은 Access-Control 헤더를 보내면 안되며 서버 만 헤더를 전송하여 서버가 웹 브라우저를 사용하여 해당 정보를 읽을 수있는 원본을 설명 할 수있게합니다.

같은 출처 정책은 일반적으로 브라우저 외부에 적용되지 않으므로 브라우저가 데이터를 가져올 수있게하려면 서버에서 CORS 헤더 또는 JSONP 데이터를 전송해야합니다.

브라우저가 서버에 이러한 헤더를 보내지 않아도됩니다. 브라우저가 특정 출발지에서 데이터를 사용할 수 있는지 여부를 결정하는 서버입니다.

params 개체에서 header 옵션을 제거, 그것은`액세스-Control` 헤더를 보내지한다

관련 문제