微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

为什么使用最宽松的设置不允许请求通过?

如何解决为什么使用最宽松的设置不允许请求通过?

我正在使用 Flask 和 React 开发 Web 应用程序,尽管使用 Flask-CORS 所有认值不变(允许所有标头和来源)请求 来自 React 被 Cross-Origin Request Blocked: The Same Origin Policy disallows reading the remote resource at http://localhost:5000/auth/check_passport. (Reason: CORS request did not succeed).

拒绝

烧瓶:

from flask_cors import CORS

def create_app(script_info=None):
    app = Flask(__name__)
    app.config.from_object(current_config)
    from project.api.auth import auth_blueprint
    app.register_blueprint(auth_blueprint)

    CORS(app)

    return app

在终端中,我可以看到它进入了 Flask:127.0.0.1 - - [20/Apr/2021 10:36:59] "POST /auth/check_passport HTTP/1.1" 200

根据文档,将 CORS 保留为认值允许任何客户端到达端点。

非常感谢任何反馈。

编辑:

auth.py:

from flask import Blueprint,request

auth_blueprint = Blueprint('auth',__name__,url_prefix='/auth')

@auth_blueprint.route('/check_passport',methods=['POST'])
def check_passport():
    print('called')  # isn't being printed out
    image_received = request.data['image']
    ...
    ...

前端:

const checkPassport = () => {
    if (passportFile) {
      const fd = new FormData();
      fd.append("image",passportFile,passportFile.name);
      const url = "http://localhost:5000/auth/check_passport";
      const config = {
        headers: {
          "Content-Type": "multipart/form-data"
        }
      };
      axios
        .post(url,fd,config)
        .then(resp => {
          console.log(resp.data.message);
          console.log(resp.data.content);
        })
        .catch(e => {
          console.log(e);
        });
    }
  };

解决方法

起初我以为这可能与您使用蓝图有关,但不,我无法重现该问题。这是我的设置:

from flask_cors import CORS
from flask import Flask,Blueprint,jsonify

auth = Blueprint('auth',__name__)

@auth.route('/check_passport')
def check_passport():
    return jsonify(dict(message='Check passport'))

app = Flask(__name__)
app.register_blueprint(auth,url_prefix='/auth')
CORS(app). # comment out to see cors error

我使用这个向端点发出请求的简单页面进行测试:(只需将其拖入浏览器窗口并观察控制台)

<!DOCTYPE html>
<html>
    <head>
        <title>Cors Check</title>
        <script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/axios/0.21.1/axios.min.js"></script>
        <script type='text/javascript'>
            var url = 'http://127.0.0.1:5000/auth/check_passport';

            // fetch
            fetch(url).then(resp => resp.json()).then(data => {
                console.log('SUCCESS')
                console.log(data)
            })
            
            // or axios
            axios.get(url).then(response => {
                console.log('SUCCESS',response.data);
            })
        </script>
    </head>

<body></body>
</html>

我可以看到它在使用 CORS(app) 时运行良好,但没有它就不行。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?