- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在开发一个 Chrome 扩展程序,它的一部分是使用 canvas
处理页面上的图像的功能。及其 context.getImageData
功能。那是我遇到CORS
的时候问题。据我了解,提供图像的服务器必须使用适当的 CORS
为所述图像提供服务。 header ,以便跨域请求成功。我开始阅读这项(对我来说)陌生的新技术 ( tutorial )。大量服务器不使用 CORS
每个 图像都得到处理,这对我的扩展程序的功能非常重要。我花了一整天的时间尝试使用客户端脚本来规避这个问题,但得出的结论是,唯一的方法是将图像 url 发送到服务器,然后根据需要将其返回CORS
header (Access-Control-Allow-Origin: *
)。现在,在开始解释我的实现之前,我想引用我之前链接的教程页面中的一段话。
Cross-Domain from Chrome Extensions
Chrome extensions support cross-domain requests in a two different ways:
Include domain in manifest.json - Chrome extensions can make cross-domain requests to any domain if the domain is included in the "permissions" section of the manifest.json file:
"permissions": [ "http://*.html5rocks.com"]
服务器不需要包含任何额外的 CORS header 或做任何更多的工作来使请求成功。
这应该意味着 "permissions": "<all_urls>"
应该规避同源策略限制。但是,这不起作用。
一个 XMLHttpRequest
将图像 url 和回调函数传递给本地主机上的服务器(用于测试目的),它首先设置适当的 header :
header('Access-Control-Allow-Origin: *');
,
然后打印 JSON
包含图像宽度、高度和使用 file_get_contents
的编码数组, imagecreatefromstring
, 和 base64_encode
, 相当于 context.getImageData
以及对回调函数的调用。
回调函数设置 Image
的 src 属性用于将图像绘制到 Canvas 上并设置其宽度和高度属性的对象(将 crossOrigin
设置为 Anonymous
)。
预期的结果是在不引发 Cross-origin image load denied by Cross-Origin Resource Sharing policy
的情况下加载和处理每张图像。错误,但是现在每张图片似乎都没有所需的CORS
标题削弱了我的扩展。我检查了处理此请求发送的本地主机上页面的 header ,似乎没问题。 ( screenshot )
我对这个解决方案的实现似乎应该有效,但我真的不知道为什么无效。服务器正在发送 Access-Control-Allow-Origin
header,图像数据良好,调用回调函数。这是发布前唯一需要解决的问题。这真是一个耐人寻味的问题。我意识到我发送的 header 不是我可能想要发送的唯一 header ,但它足以用于测试目的。
我希望这个问题很清楚,并且足够详细,以便有人可以帮助我解决这个问题。请不要犹豫,索取更多信息和/或代码片段,因为为了保持简洁,我并没有真正包含任何代码。
最佳答案
如果你的图片src是data uri(base64编码的图片数据),那么就没有headers来设置访问控制。
只需将图像源设置为您在 ajax 中调用的 url 并发回未编码的图像(echo file_get_contents
)。
关于javascript - CORS:PHP 绕过不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21237168/
今天有小伙伴给我留言问到,try{...}catch(){...}是什么意思?它用来干什么? 简单的说 他们是用来捕获异常的 下面我们通过一个例子来详细讲解下
我正在努力提高网站的可访问性,但我不知道如何在页脚中标记社交媒体链接列表。这些链接指向我在 facecook、twitter 等上的帐户。我不想用 role="navigation" 标记这些链接,因
说现在是 6 点,我有一个 Timer 并在 10 点安排了一个 TimerTask。之后,System DateTime 被其他服务(例如 ntp)调整为 9 点钟。我仍然希望我的 TimerTas
就目前而言,这个问题不适合我们的问答形式。我们希望答案得到事实、引用资料或专业知识的支持,但这个问题可能会引发辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visit the
我就废话不多说了,大家还是直接看代码吧~ ? 1
Maven系列1 1.什么是Maven? Maven是一个项目管理工具,它包含了一个对象模型。一组标准集合,一个依赖管理系统。和用来运行定义在生命周期阶段中插件目标和逻辑。 核心功能 Mav
我是一名优秀的程序员,十分优秀!