在使用VUE写后台系统的时候,发现谷歌的浏览器预校验没有提示相关跨域请求,而使用UC浏览器的时候,却提示了
image.pnglogin:1 XMLHttpRequest cannot load http://xxxxx.natappfree.cc/sys/login. Request header field Content-Type is not allowed by Access-Control-Allow-Headers in preflight response.
分析了一下,主要原因是再发起预校验的时候我们的请求头里多了一项(所有浏览器都会有):
image.png分析了一下再发起预校验的地方,我们flask后端的响应头那也设置了对于的允许的自定义的请求字段:
image.png
但是测试发现,UC 对 ‘*’的不起作用,必须要明细到具体的允许的字段信息。有点奇葩!
所以最后只能改成!
@app.after_request
def after_request(response):
'''
收到请求后的钩子
:param response:http返回结构体
:return:
'''
# # 注册跨域
response.headers['Access-Control-Allow-Origin'] = '*'
response.headers['Access-Control-Allow-Credentials'] = 'true'
# response.headers['Access-Control-Allow-Origin'] = '*'
# 注意这里的方法的名称,或直接的写GET,POST,PUT,OPTIONS,DELETE
response.headers['Access-Control-Allow-Methods'] = '*'
# response.headers['Access-Control-Allow-Headers'] = '*'
# response.headers['Access-Control-Allow-Headers'] = '*222222222'
# 这个地方不能直接的写* 号, 当前端发起跨域 解决axios出现的Request header is not allowed by Access-Control-Allow-Headers in preflight response
# 需要明确支持的头部信息
# login?redirect=%2F:1 XMLHttpRequest cannot load http://ikp5c9.natappfree.cc/sys/login. Request header field Content-Type is not allowed by Access-Control-Allow-Headers in preflight response
# 注意一点 涉及到跨域的时候,涉及自定义头部信息的时候,都需要再次加上
allow_headers = 'School-Teacher-Token,school-teacher-token,x-access-token,Referer, Accept, Origin, User-Agent,X-Requested-With, Content-Type, X-File-Name'
response.headers['Access-Control-Allow-Headers'] = allow_headers
# 请求完成最终的日志处理
register_link_end_log_record_handler(flask.request, response)
return response
且其他新增的自定义的请求的头的字段信息,也必须的给加上才可以!比如的自定义提交的 school-teacher-token,x-access-token的请求头信息!
网友评论