发生了一件非常奇怪的事情。
当然,这很好地工作。Vue应用程序运行在3412端口,Flask应用程序运行在3413端口。
然而,如果我只改变
当然,它仍然运行良好。然而,如果我只是改变另一行,它将会失败。
Vue代码永远不会改变。但浏览器显示如下:
## app.py
from flask import Flask
from flask_cors import CORS
import numpy as np
import nibabel as nib
app = Flask(__name__)
CORS(app)
@app.route("/",methods=["POST"])
def readNifti():
img = nib.load("../data/test_project/sub-mrmdCrown_Hep3bLuc_11/ses-iv03/anat/sub-mrmdCrown_Hep3bLuc_11_ses-iv03_acq-TurboRARE_run-5_T2w.nii.gz")
data = img.get_fdata()
datamin=data.min()
datamax=data.max()
data = np.round((data-datamin)/(datamax-datamin)*200).astype(np.uint8).tobytes()
# return data
return np.ones((100,123),dtype=np.uint8).tobytes()
app.run(port=3413)
<template>
<div>
Hello World
</div>
</template>
<script setup lang="ts">
import { onMounted } from 'vue';
onMounted(() => {
fetch("http://localhost:3413", {
method: "POST"
})
.then(res => res.arrayBuffer())
.then((data) => {
console.log(data.byteLength);
})
})
</script>
当然,这很好地工作。Vue应用程序运行在3412端口,Flask应用程序运行在3413端口。
然而,如果我只改变
app.py
中的一行,它就会变成:@app.route("/",methods=["POST"])
def readNifti():
img = nib.load("../data/test_project/sub-mrmdCrown_Hep3bLuc_11/ses-iv03/anat/sub-mrmdCrown_Hep3bLuc_11_ses-iv03_acq-TurboRARE_run-5_T2w.nii.gz")
data = img.get_fdata()
datamin=data.min()
datamax=data.max()
data = np.round((data-datamin)/(datamax-datamin)*200).astype(np.uint8).tobytes()
return data # this is the only line changed
return np.ones((100,123),dtype=np.uint8).tobytes()
当然,它仍然运行良好。然而,如果我只是改变另一行,它将会失败。
@app.route("/",methods=["POST"])
def readNifti():
img = nib.load("../data/test_project/sub-mrmdCrown_Hep3bLuc_11/ses-iv03/anat/sub-mrmdCrown_Hep3bLuc_11_ses-iv03_acq-TurboRARE_run-5_T2w.nii.gz")
data = img.get_fdata()
datamin=data.min()
datamax=data.max()
# the next line: 200 -> 255, only this number is changed
data = np.round((data-datamin)/(datamax-datamin)*255).astype(np.uint8).tobytes()
return data
return np.ones((100,123),dtype=np.uint8).tobytes()
Vue代码永远不会改变。但浏览器显示如下:
由于跨源资源共享(CORS)策略的限制,无法从源 'http://localhost:3412' 访问位于 'http://localhost:3413/' 的资源。请求的资源上未提供 'Access-Control-Allow-Origin' 头信息。如果不需要访问响应的内容,可以将请求的模式设置为 'no-cors',以禁用CORS并获取该资源。
为什么ndarray的振幅会影响CORS?这是一个错误吗?可能的原因是什么?我应该怎么解决这个问题?我只想在传输之前缩小图像的尺寸。
另外,我使用SSH本地端口转发将Linux主机上的3413和3412端口转发到我的Windows机器。
顺便说一下,当检测到代码更改时,Flask会重新启动应用程序。但它并不总是可靠的。请在对Python代码进行任何更改时终止Flask应用程序并重新启动它。
版本信息:
Chrome:Version 114.0.5735.199(Official Build)(64位)
>>> import flask
>>> flask.__version__
'2.2.2'
>>> import flask_cors
>>> flask_cors.__version__
'3.0.10'
>>> import numpy
>>> numpy.__version__
'1.25.0'
>>> import nibabel
>>> nibabel.__version__
'5.1.0'
$ node -v
v16.13.1
$ npm -v
8.1.2
$ cat /etc/redhat-release
CentOS Linux release 7.9.2009 (Core)