2013-06-11 2 views
4

나는 JSON과 AJAX를 사용할 수 있도록 Access Control-Allow-Origin : * 헤더를 사용하여 공용 공개 웹 사이트를 설정했습니다. 그러나, 내가 정말로하고 싶은 것은 특정 서버에만 국한시키는 것입니다. 요청은 우리가 제어하는 ​​몇몇 서버에서만 이루어져야합니다. 내가 코드를 추가하지 않고 작동하는 무언가를 찾는 데 문제가 있어요 (예를 들어, 사이비 코드) :출입 통제 원산지 제한

for each domain in myDomains 
    addheader Access-Control-Allow-Origin: domain 
next 

그냥 여러 추가 할 수 있습니다 "액세스 제어 - - 원산지 허용"HTTP 헤더 탭에서 IIS에서를? IIS에 실제로 추가 할 수 있다는 것을 알고 있지만 작동합니까?

예 :

Access-Control-Allow-Origin: http://domain1 
Access-Control-Allow-Origin: http://domain2 
Access-Control-Allow-Origin: http://127.0.0.1 (use using home as IP example) 

사용하여 액세스 제어는-허용 - 원산지 : * 그냥 불안이다.

답변

8

아니요, 복수 Access-Control-Allow-Origin 헤더를 사용할 수 없습니다. 하나의 Access-Control-Allow-Origin 응답 헤더 만 가질 수 있으며 그 헤더는 하나의 원점 값 또는 * (예 : 공백으로 구분 된 여러 개의 원본을 가질 수 없음) 만 가질 수 있습니다.

가장 좋은 옵션은 들어오는 Origin 헤더를 읽고 화이트리스트와 비교하여 값을 확인한 다음 Origin이 허용되는 경우 Access-Control-Allow-Origin 헤더 만 내보내는 것입니다. 다음은 의사 코드의 예입니다.

origin = request.getHeader('Origin'); 
for each domain in myDomains 
    if (domain == origin) 
    // Add header if the origin is whitelisted 
    addheader Access-Control-Allow-Origin: domain 
    return 
// Otherwise exit the for loop without adding any headers. 
+1

내가 피하려고했던 것이었지만 지난 두 시간 동안 내가 읽었던 것을 확인했습니다. 난 단지 서버 구성 변경 및 비상 코드 푸시를 기대하지 않았습니다. 감사. –

+0

어디에서 추가 할 수 있습니까? – Si8

+0

'addHeader' 함수 란 무엇입니까? – Si8

관련 문제