django中解決跨域問題

-跨域問題
	-瀏覽器的:同源策略,瀏覽器拒毫不是當前域域返回的數據
	-ip地址和端口號都相同纔是同一個域
	-如何解決:
		-CORS:跨域資源共享
		-簡單請求:發一次請求
		-非簡單請求:非簡單請求是發送了兩次請求,第一次是預檢請求(OPTIONS請求),當預檢經過,容許我發請求,再發送真實的請求
	-解決跨域問題:(寫好這個中間件配置一下)
		class MyCorsMiddle(MiddlewareMixin):
			def process_response(self, request, response):
				if request.method == 'OPTIONS':
					# 容許它
					response['Access-Control-Allow-Headers'] = 'Content-Type'
					# obj['Access-Control-Allow-Headers']='*'

					# obj['Access-Control-Allow-Origin']='http://127.0.0.1:8000'
				response['Access-Control-Allow-Origin'] = '*'
				return response
	-別人寫的cors-headers(瞭解一下)

跨域問題

由於瀏覽器的同源策略規定某域下的客戶端在沒明確受權的狀況下,不能讀寫另外一個域的資源。而在實際開發中,先後端經常是相互分離的,而且先後端的項目部署也經常不在一個服務器內或者在一個服務器的不一樣端口下。前端想要獲取後端的數據,就必須發起請求,若是不作一些處理,就會受到瀏覽器同源策略的約束。後端能夠收到請求並返回數據,可是前端沒法收到數據。前端

Django中處理跨域問題

cors-headers模塊

pip3 install django-cors-headers
INSTALLED_APPS = [
    ...
    'corsheaders',
    ...
 ] 

MIDDLEWARE_CLASSES = (
    ...
    'corsheaders.middleware.CorsMiddleware',
    'django.middleware.common.CommonMiddleware', # 注意順序
    ...
)
#跨域增長忽略
CORS_ALLOW_CREDENTIALS = True
CORS_ORIGIN_ALLOW_ALL = True
CORS_ORIGIN_WHITELIST = (
    '*'
)

CORS_ALLOW_METHODS = (
    'DELETE',
    'GET',
    'OPTIONS',
    'PATCH',
    'POST',
    'PUT',
    'VIEW',
)

CORS_ALLOW_HEADERS = (
    'XMLHttpRequest',
    'X_FILENAME',
    'accept-encoding',
    'authorization',
    'content-type',
    'dnt',
    'origin',
    'user-agent',
    'x-csrftoken',
    'x-requested-with',
    'Pragma',
)

JWPpython

在Django中的視圖函數中寫入數據django

def myview(_request): 
    response = HttpResponse(json.dumps({「key」: 「value」, 「key2」: 「value」})) 
    response[「Access-Control-Allow-Origin」] = 「*」 
    response[「Access-Control-Allow-Methods」] = 「POST, GET, OPTIONS」 
    response[「Access-Control-Max-Age」] = 「1000」 
    response[「Access-Control-Allow-Headers」] = 「*」 
    return response
相關文章
相關標籤/搜索