javascript - CORS 错误 header 允许来源 * http 与 https

标签 javascript ajax servlets cors xmlhttprequest

我正在使用 XMLHttpRequest(),发送 POST 。 在我们的 servlet 中,我们默认为 req.setHeader("Access-Control-Allow-Origin", "*");

如果从 http:// 提供服务,Safari 和 Edge 会导致 CORS 错误,但如果https://则不然。不管怎样,Chrome 和 FF 的表现都很好。

我有一个用于上传的第二个 POST,它成功运行,因为它包含此方法:

setSecureConnection: function() {
  baseURL = baseURL.replace(/http\:/, 'https:');
}

在失败的servlet上,我尝试过req.setHeader("Access-Control-Allow-Origin", req.getHeader("Origin"));也没有成功。

那么为什么浏览器不接受通配符呢?

最佳答案

我通常通过附加 https://cors-anywhere.herokuapp.com/ 来使用 CORSA API(省去了处理 header 的麻烦)到 URL(例如: https://cors-anywhere.herokuapp.com/http://URL2POST.COM/ );只是一个有用的提示。

对于您的 header ,对于 Edge 和 Safari,假设您的请求正在传递源并且一切正常,您可能需要尝试以下操作:

req.setHeader("Access-Control-Allow-Origin", "*");
req.setHeader("Access-Control-Allow-Credentials", "true");
req.setHeader("Access-Control-Allow-Methods", "ACL, CANCELUPLOAD, CHECKIN, CHECKOUT, COPY, DELETE, GET, HEAD, LOCK, MKCALENDAR, MKCOL, MOVE, OPTIONS, POST, PROPFIND, PROPPATCH, PUT, REPORT, SEARCH, UNCHECKOUT, UNLOCK, UPDATE, VERSION-CONTROL");
req.setHeader("Access-Control-Allow-Headers", "Overwrite, Destination, Content-Type, Depth, User-Agent, Translate, Range, Content-Range, Timeout, X-File-Size, X-Requested-With, If-Modified-Since, X-File-Name, Cache-Control, Location, Lock-Token, If");
req.setHeader("Access-Control-Expose-Headers", "DAV, content-length, Allow");

希望有帮助:)

关于javascript - CORS 错误 header 允许来源 * http 与 https,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51576384/

相关文章:

java - jsp 页面( View )和 servlet( Controller )之间的事务排序

javascript - 从 URL 替换正斜杠后的所有内容

javascript - 对于 html 表单发布请求,formdata 对象为空

jsf - 如何将响应大小和时间插入页面本身,至少部分?

javascript - 如何在 Handlebars 中显示 json 数组中的数据?

jquery - 通过 ajax jQuery post 和表单提交保存数​​据

java - Servlets:在哪里存储上传的文件?

javascript - 如何在数据库中保存 Google map v3 圆形和矩形叠加层而不会出现错误?

javascript - 在 p5.js javascript 中创建项目符号对象

javascript - Typescript 方法装饰器