2016-12-01 81 views
0

我知道這個qquestion問了好幾次,但沒有解決我的問題。我使用axios從服務器獲取標記(​​)。我在本地主機上工作。我也提供了標題,但仍然出現No 'Access-Control-Allow-Origin' header is present的錯誤。這個錯誤是從我的js代碼(axios)產生的還是它在服務器中的問題?沒有'Access-Control-Allow-Origin'標題出現在請求的資源

const config = { 
    method: 'get', 
    url: `${API_URL}/token`, 
    headers: { 
     'Access-Control-Allow-Origin': '*', 
     'Content-Type': 'application/json', 
     }, 
    }; 

export function getToken() { 
    return function (dispatch) { 
    console.log('action triggered atleast'); 
    axios.request(config) 
    .then(response => { 
     console.log('response', response); 
     localStorage.setItem('token', response.data.token); 
     dispatch({ type: GET_TOKEN }); 
    }) 
    .catch(error => { 
     errorHandler(dispatch, error.response, TOKEN_ERROR); 
    }); 
    }; 
} 

我做了任何錯誤或錯過了我的代碼中的東西?

UDPATE

add_header 'Access-Control-Allow-Origin' "*"; 
     add_header 'Access-Control-Allow-Credentials' 'true'; 
     add_header 'Access-Control-Allow-Methods' 'GET, POST, PUT, DELETE, OPTIONS'; 
     add_header 'Access-Control-Allow-Headers' 'X-CustomHeader,Accept,Authorization,Cache-Control,Content-Type,DNT,If-Modified-Since,Keep-Alive,Origin,User-Agent,X-Requested-With'; 
     # required to be able to read Authorization header in frontend 
     add_header 'Access-Control-Expose-Headers' 'Authorization' ; 

if ($request_method = 'OPTIONS') { 
     # Tell client that this pre-flight info is valid for 20 days 
     add_header 'Access-Control-Max-Age' 1728000; 
     add_header 'Content-Type' 'text/plain charset=UTF-8'; 
     add_header 'Content-Length' 0; 
     return 204; 
} 

以上就是我的nginx的配置。

回答

2

服務器需要發送的CORS頭不要求背

到這裏看看如何啓用CORS:http://enable-cors.org/server.html

如果您沒有訪問服務器,那麼也許你想嘗試類似於cors proxy

+0

所以在前端沒有問題。問題出在服務器上。我有nginx服務器,我需要通過做這樣的'Access-Control-Allow-Origin'來啓用CORS:'*',但以其自己的方式不是js方式? – Serenity

+0

糾正問題出在服務器(nginx) – Endless

+0

謝謝,我從你的理解和你分享的鏈接。在大多數這樣的問題中,我看到使用頭和服務器問題的地方,所以我搞不清究竟是什麼問題。再次感謝您的支持和幫助。 – Serenity

相關問題