跨域請求 服務端設置便可 1 瀏覽器的同源策略 2 簡單請求:發一次請求 response['Access-Control-Allow-Origin'] = '*' response['Access-Control-Allow-Origin'] = 'http://127.0.0.1:8008,http://127.0.0.1:8009' 2 非簡單請求:發兩次,一次預檢(OPTIONS),第二次是真正的請求 if request.method=='OPTIONS': response['Access-Control-Allow-Methods']='PUT,DELETE' response['Access-Control-Allow-Headers']='Content-Type' 建議寫再中間件裏 註釋:裏面儘可能不要寫(*),都支持(*)
8001:ajax請求跨域html
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> {% load static %} <script src="{% static 'jquery-3.3.1.js' %}"></script> <title>Title</title> </head> <body> <button id="mybutton">點我</button> </body> <script> $("#mybutton").click(function () { $.ajax({ url:'http://127.0.0.1:8000/mytest/', type:'get', headers:{'k1':'dddd'}, success:function (data) { console.log(data) } }) }) </script> </html>
8000: 服務端配置跨域jquery
settings: 中間件配置
'app01.mymiddle.MyMiddle'
mymiddle:新建中間件文件:
from django.utils.deprecation import MiddlewareMixin
class MyMiddle(MiddlewareMixin):
def process_response(self, request, response):
if request.method == 'OPTIONS':
response['Access-Control-Allow-Methods'] = 'PUT'
response['Access-Control-Allow-Headers'] = 'k1'
response['Access-Control-Allow-Origin'] = '*'
return response