我正在开发一个 chrome 应用程序,终于到了向 node.js 服务器发出 PUT 的地步。我的 GET 逻辑工作正常。然而,我的 PUT 被劫持到一个 OPTIONS 请求中。我的要求是
http://localhost:4000/whatever
我读到了 OPTIONS 通行证,要求允许执行 PUT。我的印象是 BROWSERS 在请求 CORS 时会发出 OPTIONS,但没有意识到 chrome 应用程序也会为我执行此操作。
应用程序这样做是因为我没有而且我应该这样做,还是这个 SOP chrome 会发出 OPTIONS 请求而我只是发出触发它的 PUT?
我的 PUT 永远不会到达服务器。我尝试在 PUT 之前发布自己的 OPTIONS,但到目前为止没有任何效果。OPTIONS 请求将其发送到服务器(默认的或我的),但这就是对话的结束。
在服务器上,我为满足 OPTIONS 请求所做的一切如下:
case 'OPTIONS':
res.writeHead(200, {'Access-Control-Allow-Methods': 'OPTIONS, TRACE, GET, HEAD, POST, PUT',
'Access-Control-Allow-Origin': "*"});
break;
当我尝试发出自己的 OPTIONS & PUT 请求时,我使用单独的 XMLHttpRequest 对象来执行它们。我看不到从 OPTIONS 到 PUT 的权限移交是在哪里进行的。