Table of Contents
1. Start the server
1. There are compatibility issues with cossOrigin
Home Web Front-end H5 Tutorial Summary of problems and solutions encountered when Canvas images cross domains

Summary of problems and solutions encountered when Canvas images cross domains

Sep 17, 2018 pm 04:04 PM
canvas html5

The content of this article is a summary of the problems and solutions encountered in cross-domain Canvas images. It has certain reference value. Friends in need can refer to it. I hope it will be helpful to you.

Although you can use Canvas without CORS Use pictures in canvas, but this will pollute the canvas. Once the canvas is contaminated, you cannot read its data. For example, you can no longer use canvas's toBlob(), toDataURL() or getImageData() methods, calling them will throw a security error. This mechanism can avoid user privacy leakage caused by pulling remote website information without permission.

The image in the HTML specification has a crossorigin attribute. Combined with the appropriate CORS response header, you can use the image of the cross-domain element in the canvas.

##anonymousN/ASame as aboveSupport rendering, supportuse-credentialsN/ASame as aboveSupports rendering, does not support
crossOrigin/CORS Same domain No CORS across domains CORS across domains
default Supported Supported rendering, not supported toDataURL Supported rendering, not SupporttoDataURL
toDataURL
toDataURL
Summary: Canvas can render cross-domain images normally, but when the cross-domain image does not set a cross-domain response header or does not set crossOrigin = 'anonymous', use canvas.toDataURl will throw the following error:

Chrome

crossOrigin is not set

Uncaught DOMException: Failed to execute 'toDataURL' on 'HTMLCanvasElement': Tainted canvases may not be exported.
at Image.img.onload...
Copy after login
Cross-domain

Access to Image at 'http://localhost:3001/canvas.jpg' from origin 'http://localhost:3000' has been blocked by CORS policy: No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://localhost:3000' is therefore not allowed access.
Copy after login
crossOrigin=use-credentials## is set #
Access to Image at 'http://localhost:3002/canvas.jpg' from origin 'http://localhost:3000' has been blocked by CORS policy: The value of the 'Access-Control-Allow-Origin' header in the response must not be the wildcard '*' when the request's credentials mode is 'include'. Origin 'http://localhost:3000' is therefore not allowed access.
Copy after login

Safari/Firefox

crossOrigin is not set

SecurityError: The operation is insecure.

Cross domain

[Error] Origin http://192.168.3.99:3000 is not allowed by Access-Control-Allow-Origin.
[Error] Failed to load resource: Origin http://192.168.3.99:3000 is not allowed by Access-Control-Allow-Origin. (canvas.jpg, line 0)
[Error] Cross-origin image load denied by Cross-Origin Resource Sharing policy.
Copy after login

corssOrigin=use is set -credentials

[Error] Cannot use wildcard in Access-Control-Allow-Origin when credentials flag is true.
[Error] Failed to load resource: Cannot use wildcard in Access-Control-Allow-Origin when credentials flag is true. (canvas.jpg, line 0)
[Error] Cross-origin image load denied by Cross-Origin Resource Sharing policy.
Copy after login

Test example

1. Start the server

npm start:Start the server

npm run start:corsdisable:Start the cross-domain image server

npm run start:corsable:Start the cross-domain-CORS image server

2. Visit http://localhost:3000

Other questions

1. There are compatibility issues with cossOrigin

For browsers that do not support cossOrigin (IE 10 and below are not supported, Android 4.3 and below are not supported) you can use XMLHttprequest and URL.createObjectURL() for compatibility, refer to the test Example Ajax solves the cross-domain problem of Canvas images.

2. Why not use images from the same domain?

Current front-end development generally places static resources on CDN, such as Alibaba Cloud or Tencent Cloud Services, and there will be a dedicated domain name to access these resources.

The above is the detailed content of Summary of problems and solutions encountered when Canvas images cross domains. For more information, please follow other related articles on the PHP Chinese website!

Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn

Hot AI Tools

Undresser.AI Undress

Undresser.AI Undress

AI-powered app for creating realistic nude photos

AI Clothes Remover

AI Clothes Remover

Online AI tool for removing clothes from photos.

Undress AI Tool

Undress AI Tool

Undress images for free

Clothoff.io

Clothoff.io

AI clothes remover

Video Face Swap

Video Face Swap

Swap faces in any video effortlessly with our completely free AI face swap tool!

Hot Tools

Notepad++7.3.1

Notepad++7.3.1

Easy-to-use and free code editor

SublimeText3 Chinese version

SublimeText3 Chinese version

Chinese version, very easy to use

Zend Studio 13.0.1

Zend Studio 13.0.1

Powerful PHP integrated development environment

Dreamweaver CS6

Dreamweaver CS6

Visual web development tools

SublimeText3 Mac version

SublimeText3 Mac version

God-level code editing software (SublimeText3)

Table Border in HTML Table Border in HTML Sep 04, 2024 pm 04:49 PM

Guide to Table Border in HTML. Here we discuss multiple ways for defining table-border with examples of the Table Border in HTML.

HTML margin-left HTML margin-left Sep 04, 2024 pm 04:48 PM

Guide to HTML margin-left. Here we discuss a brief overview on HTML margin-left and its Examples along with its Code Implementation.

Nested Table in HTML Nested Table in HTML Sep 04, 2024 pm 04:49 PM

This is a guide to Nested Table in HTML. Here we discuss how to create a table within the table along with the respective examples.

HTML Table Layout HTML Table Layout Sep 04, 2024 pm 04:54 PM

Guide to HTML Table Layout. Here we discuss the Values of HTML Table Layout along with the examples and outputs n detail.

HTML Input Placeholder HTML Input Placeholder Sep 04, 2024 pm 04:54 PM

Guide to HTML Input Placeholder. Here we discuss the Examples of HTML Input Placeholder along with the codes and outputs.

HTML Ordered List HTML Ordered List Sep 04, 2024 pm 04:43 PM

Guide to the HTML Ordered List. Here we also discuss introduction of HTML Ordered list and types along with their example respectively

Moving Text in HTML Moving Text in HTML Sep 04, 2024 pm 04:45 PM

Guide to Moving Text in HTML. Here we discuss an introduction, how marquee tag work with syntax and examples to implement.

HTML onclick Button HTML onclick Button Sep 04, 2024 pm 04:49 PM

Guide to HTML onclick Button. Here we discuss their introduction, working, examples and onclick Event in various events respectively.

See all articles