Zaiyu CORS - результаты заголовка НТТР в кросс-домене

указательный столб

  • Ну, междоменный фоновая конфигурация, но передний конец в заголовке HTTP, чтобы добавить маркера, а также создавать проблемы между доменами
  • Колба, Вьет (Вардар), кросс-домен

Применяемая сцена

  • До и после окончания разделения, необходимо использовать маркер для управления сост, или обратного вызова интерфейса

окружающая среда

  • Платформонезависимый

Ссылка блог

фон

По разным причинам отказались от использования готового блог похож на WordPress этого решения, подготовить себя, чтобы построить систему блог, выбор технологии: бэкенд: Колба, передний конец: Вьет. Войти государственное управление отказаться от печенья, используя маркер. Проблема CORS оказалась маршрут, чтобы защитить развитие конкретной ситуации Вьет получаются из фона добавляется в запрос маркеров заголовка HTTP, вызвать соответствующие интерфейсы через домены появляются.

Перед кросс-домен на самом деле появился в термос по flask_cors сконфигурировано решение междоменное, поэтому генерация междоменное делает меня очень озадачило, и потому, что проблема довольно странно, не найти хорошее решение в поисковых системах (может быть, я не знаю, как описать, он нашел их нет), так что он может пересмотреть свои собственные кросс-домен, есть какой-то новый урожай.

анализ

Я считаю, что использование передней и задней частью отделения разработчика на ранней стадии развития будет работать в проблему перекрестного домена, есть много решения междоменного, я решил быть решен через задний план.

Междоменный вопрос браузера политика общего происхождение вызвало много интернет связанных статей, здесь не повторяются. Обратите внимание, что: не Почтальон не кросс-домена.

Колба решить решение междоменное очень просто, следующий код для завершения.

from flask_cors import CORS
CORS(app,supports_credentials=True

@app.after_request
def after_request(resp):
    resp = make_response(resp)
    resp.headers['Access-Control-Allow-Origin'] = 'http://127.0.0.1:8080'
    resp.headers['Access-Control-Allow-Methods'] = 'GET,POST'
    resp.headers['Access-Control-Allow-Headers'] = 'x-requested-with,content-type'
    return resp

После настройки, он не не было никаких проблем, так что не пошли дальше понять смысл своей конфигурации до этого времени он застрял, так что я должен был узнать, что мой междоменное конфигурации что-то?

На самом деле, ключевым моментом этой проблемы заключается в том , что три конфигурации: Access-Control-Allow-Origin, Access-Control-Allow-Methods, Access-Control-Allow-Headers.
Они в конце концов , в чем смысл?

Прежде всего Access-Control-Allow-Origin, в буквальном смысле, эта конфигурация позволяет соответствующий источник для доступа фонов ресурсов, главным образом в письменной форме в Интернете здесь есть *, что позволяет все источники, это не безопасно, потому что я здесь местный этап развития, Вьет порт старт 8080, так что я писал , что http://127.0.0.1:8080, в соответствии с вашими потребностями развития в тройки их потребности.

Во- вторых Access-Control-Allow-Methods, также в буквальном смысле, чтобы разрешить использование метода HTTP , который, GET, POST является наиболее распространенным, где написал только два, если вам нужно использовать другой метод, здесь писать, или будет проблемы междоменное.

Более двух конфигураций не проблема, проблема в последней части:

Access-Control-Allow-HeadersИ два выше, в буквальном смысле, причина в том , что она является проблемой, потому что мы добавим поле для запроса HTTP пользовательский передний конец token(только разрешение, но это не входит в сферу действия лицензии x-requested-withи content-type), следовательно , для того , чтобы определить политику источника не соответствует контракту недопустимого запроса, так что нам нужно только настроить заголовок может быть добавлен к нему. Ответ вышел.

Продолжайте копать немного, то , что два значения этого поля? x-requested-with, content-type.

x-requested-withОн используется для определения запроса клиента инициируется Аякс, и поэтому Вардар Что такое отношение? Ответ: это не имеет значения ... это может быть непосредственно удалены. Вставьте этот код является человеком по умолчанию или запрос инициирования с использованием Ajax, но не анализ или полем значения, поэтому он непосредственно подключен к коду, но для разработчиков, использующих AXIOS, это поле не является неизбежным.

content-type: Указанный формат данных, и кодирование запроса POST. Наиболее распространенный формат данных , чем josn, следующий вид: application/jsonраспечатаны на заднем конце запроса POST HTTP заголовка, обнаружит это и следующие данные.

Content-Type: application/json;charset=UTF-8

Решения

В Access-Control-Allow-Headersзаголовке добавить пользовательское имя в целом выглядит следующим образом :

from flask_cors import CORS
CORS(app,supports_credentials=True

@app.after_request
def after_request(resp):
    resp = make_response(resp)
    resp.headers['Access-Control-Allow-Origin'] = 'http://127.0.0.1:8080'
    resp.headers['Access-Control-Allow-Methods'] = 'GET,POST'
    resp.headers['Access-Control-Allow-Headers'] = 'content-type,token'
    return resp

На самом деле, прямой удалить Access-Control-Allow-Headersэту конфигурацию , может решить эту проблему, но перечислить все неподвижная ситуация, безусловно , безопаснее.

####
Для более Haytham оригинальных статей, пожалуйста , обратите внимание на общедоступный номер «Xuju Long»:
Мой микро-общественный канал номер

рекомендация

отblog.51cto.com/13852791/2438064
рекомендация