angularjs 6 python django остальные фреймворки междоменная проблема вызова API - PullRequest
0 голосов
/ 29 июня 2018

Я настроил django rest framework с python 3. И API работает нормально в почтальоне. Но я сталкиваюсь с проблемой междоменных областей, когда я вызываю этот API через мой проект angualar 6.

ОС: Mac OS

Я включил oauth2 для аутентификации. Хорошо работает с почтальоном

URL-адрес API: http://127.0.0.1:7777/api/v1/token/

URL-адрес сайта Angular 6: http://localhost:5000/#/login

Когда я вызывал это с angualrjs, это показывает следующую ошибку.

Mozilla:

Cross-Origin Request Blocked: The Same Origin Policy disallows reading the remote resource at http://127.0.0.1:7777/api/v1/token/. (Reason: CORS header ‘Access-Control-Allow-Origin’ missing).

Safari:

Failed to load resource: Origin http://localhost:5000 is not allowed by Access-Control-Allow-Origin.
XMLHttpRequest cannot load http://127.0.0.1:7777/api/v1/token/. Origin http://localhost:5000 is not allowed by Access-Control-Allow-Origin.

Chrome:

 Failed to load http://127.0.0.1:7777/api/v1/token/: Response to preflight request doesn't pass access control check: No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://localhost:5000' is therefore not allowed access.

python settings.py cors связанные части:

INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'django.contrib.sites',
    'django.contrib.flatpages',
    'widget_tweaks',
    'rest_framework',
    'oauth2_provider',
    'corsheaders',
] + get_core_apps() 
SITE_ID = 1


ALLOWED_HOSTS = ['127.0.0.1']
CORS_ORIGIN_WHITELIST = ('localhost:5000')
CORS_ORIGIN_ALLOW_ALL = True



MIDDLEWARE_CLASSES = [

    'django.middleware.security.SecurityMiddleware',
    'corsheaders.middleware.CorsMiddleware',
    'django.contrib.sessions.middleware.SessionMiddleware',
    'django.middleware.common.CommonMiddleware',
    'django.middleware.csrf.CsrfViewMiddleware',
    'django.contrib.auth.middleware.AuthenticationMiddleware',
    'django.contrib.messages.middleware.MessageMiddleware',
    'django.middleware.clickjacking.XFrameOptionsMiddleware',
]

Я также установил OscarCommerce, oauth2, django rest framework. Я настроил три других сайта в моей системе с angularjs6 и python 2.7. Все работают нормально. Эта проблема возникает только в этом проекте Python 3.

Ответы [ 2 ]

0 голосов
/ 02 июля 2018

Попробуйте:

ALLOWED_HOSTS = []

CORS_ORIGIN_WHITELIST = (    
'127.0.0.1:7777',
'localhost:5000')

CORS_ORIGIN_ALLOW_ALL = True

Также см. Эту ссылку для получения дополнительной информации.

0 голосов
/ 29 июня 2018

Добавьте приведенный ниже код в ваши settings.py

# Corsheaders settings
CORS_ORIGIN_ALLOW_ALL = True
CORS_ALLOW_CREDENTIALS = True
CORS_ORIGIN_WHITELIST = ('*')

это будет работать ....

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...