2016-10-12 3 views
7

Мне что-то не хватает. Я изо всех сил старался работать с API-интерфейсом. Затем я разделил URL-адрес, как показано ниже, и он работает буквально один раз. после этого он снова не работал. Клянусь, я ничего не менял.Заголовок Axios - No 'Access-Control-Allow-Origin' присутствует

Как вы это делаете в AXIOS?

Сообщение об ошибке является
XMLHttpRequest cannot load http://magicseaweed.com/api/W2Z26fXscpELi7nPB0svfqcGj9FtGO9e/forecast/?spot_id=228. No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://localhost:8080' is therefore not allowed access.

import axios from 'axios'; 

const ROOT_URL = `magicseaweed.com/api/W2Z26fXscpELi7nPB0svfqcGj9FtGO9e/forecast/`; 

export const FETCH_WEATHER = 'FETCH_WEATHER'; 

export function fetchWeather() { 
    const url = `http://${ROOT_URL}?spot_id=228`; 
    const request = axios.get(url); 

    return { 
     type: FETCH_WEATHER, 
     payload: request 
    }; 
} 

Я пытался с этим модифицированным GET Aswell, но безрезультатно

axios({ 
    url: url , 
    headers: {"Access-Control-Allow-Origin": "*"}, 
}); 
+0

Возможный дубликат [Нет «Access-Control-Allow Заголовок -Origin 'присутствует на запрошенном ресурсе. Поэтому Origin '...' не имеет доступа] (http://stackoverflow.com/questions/20433655/no-access-control-allow-origin-header-is-present-on-the-requested-resource-or). Это очень распространенный вопрос и не имеет никакого отношения к сокращению. Сообщение ссылается на ваш вопрос, но могут быть и лучшие. –

+0

Хорошо, справедливая точка. но, глядя на документацию 'axios', я не смог увидеть что-то, чтобы настроить это. Я попробовал другие варианты, но это не сработало. Я перечислил его – morne

+0

Это то, что сервер должен быть настроен. Вы можете по-прежнему называть магические водоросли, если вы настраиваете проект на сервере, как говорит вам ответ. –

ответ

1

Посмотрите здесь:

https://www.npmjs.com/package/magicseaweed

Внизу говорится, почему их API-оболочка не будет работать в браузере. По той же причине вы не можете сделать вызов Ajax в браузере.

FAQ

Могу ли я использовать этот модуль в браузере с browserify?

Теория да, но API Magicseaweed в настоящее время не отправляет заголовок Access-Control-Allow-Origin в запросы браузера (как-то заголовок отправляется, если вы воспроизводите запрос через cURL).

Так что если API изменит это поведение, этот модуль будет работать с браузером.

не

Вы можете стоять свой собственный прокси-сервер, или вы можете использовать один из свободных единиц, доступных в Интернете:

https://developer.yahoo.com/yql/

https://crossorigin.me/

+0

Спасибо, Роберт. У меня будет чтение – morne

+1

. Я пытаюсь сам его вызвать, и я могу подтвердить, что API не возвращает заголовок Access-Control-Allow-Origin, поэтому он не будет работать с AJAX. Btw, это аксиомы, а не для браузера :) Редактировать: извините, просто они сказали, что они говорят то же самое на своей странице в npm, поэтому вы сказали, что браузеру нравится :) –