以下代码不起作用
import matplotlib.gridspec as gridspec
import matplotlib.pyplot as plt
from mpl_toolkits.axes_grid1.inset_locator import zoomed_inset_axes
from mpl_toolkits.axes_grid1.inset_locator import mark_inset
import matplotlib.image as mpimg
import matplotlib.patches as patches
import numpy as np
def zoom_in_rec(input, ax,rect, cmap):
axins = zoomed_inset_axes(ax, 2, loc=3) # zoom-factor: 2.5, location: upper-left
x1, x2, y1, y2 = rect.get_x(), rect.get_x()+rect.get_width(),rect.get_y(), rect.get_y()+rect.get_height() # specify the limits
axins.set_xlim(x1, x2) # apply the x-limits
axins.set_ylim(y1, y2) # apply the y-limits
mark_inset(ax, axins, loc1=3, loc2=4, fc="none", ec="1.0")
plt.yticks(visible=False)
plt.xticks(visible=False)
# flip image
rot = np.flipud(input)
axins.imshow(rot, cmap=cmap)
if __name__ == "__main__":
img = mpimg.imread('/home/eyllanesc/Downloads/lena.png')
#Plot
fig = plt.figure(figsize=(128,128))
fig.patch.set_facecolor('white')
gs1 = gridspec.GridSpec(1,1)
gs1.update(wspace=0.02, hspace=0.02) # set the spacing between axes.
ax1 = plt.subplot(gs1[0])
ax1.imshow(img,cmap='gray')
rect1 = patches.Rectangle((200, 200), 120, 80, linewidth=3, edgecolor='r', facecolor='none')
zoom_in_rec(img, ax1,rect1, cmap='gray')
plt.show()
请注意,我不想为整个应用启用CORS。
答案 0 :(得分:2)
发布此作为答案,因为它原来是问题(根据我之前的评论)。根据您正在进行的确切CORS请求,浏览器可能会决定是否需要执行请求的预先安排。如果是,则还需要在匹配的OPTIONS请求中设置自定义标头。
许多事情都可以触发预飞行,例如自定义标题,使用某些动词,某些身份验证机制等......
在这些文章中有关于哪些类型的请求触发飞行前的描述:
基本上,任何未被定义为"简单请求的请求"简单请求只使用GET,HEAD和POST以及一小组自定义标头。对于某些标题,其他任何内容甚至某些值都会触发预检请求,其中浏览器会在发送实际网址之前向相同的URL请求转发前授权发送OPTIONS请求。
答案 1 :(得分:2)
您可以使用类似这样的内容:
var express = require('express')
var cors = require('cors')
var corsOptions = { origin: 'http://yourapp.com'}
var app = express()
app.get('/products/:id', cors(corsOptions), function (req, res, next) {
res.json({msg: 'This is CORS-enabled for a Single Route'})
})
app.listen(8080, function () {
console.log('CORS-enabled web server listening on port 8080')
})
默认情况下,只有6个响应标头通过CORS公开:
如果要公开其他标题,则可以使用暴露的标题选项:
corsOptions = {
exposedHeaders: ['Content-Length', 'X-Foo', 'X-Bar'],
}
有关CORS的更多详细信息,请参考此内容:
答案 2 :(得分:0)
基于Clark Jung的回复,您可以使用https://github.com/expressjs/cors#enable-cors-for-a-single-route
var express = require('express')
var cors = require('cors')
var app = express()
app.get('/products/:id', cors(), function (req, res, next) {
res.json({msg: 'This is CORS-enabled for a Single Route'})
})
app.listen(80, function () {
console.log('CORS-enabled web server listening on port 80')
})
答案 3 :(得分:-1)
为什么不使用https://github.com/expressjs/cors。你可以这样使用。
var express = require('express')
var cors = require('cors')
var app = express()
app.use(cors())
app.get('/products/:id', function (req, res, next) {
res.json({msg: 'This is CORS-enabled for all origins!'})
})
app.listen(80, function () {
console.log('CORS-enabled web server listening on port 80')
})
或参考此处https://enable-cors.org/server_expressjs.html
app.use(function(req, res, next) {
res.header("Access-Control-Allow-Origin", "*");
res.header("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept");
next();
});
app.get('/', function(req, res, next) {
// Handle the get for this route
});
app.post('/', function(req, res, next) {
// Handle the post for this route
});