Web Pushが動くデモサイトをhtmlとJavaScriptのみで作っていたら、Push時に以下のようなエラーになった。
Fetch API cannot load https://gcm-http.googleapis.com/gcm. Response to preflight request doesn't pass access control check: No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://localhost' is therefore not allowed access. The response had HTTP status code 405. If an opaque response serves your needs, set the request's mode to 'no-cors' to fetch the resource with CORS disabled.
どうやらGCMはクロスドメインに対応していないらしい。
PushはJavaScriptではなく別の仕組みを使わないといけないですね。
蛇足
FirefoxのWeb Pushサーバだとクロスドメインでも動く。