大龄小白请教:跨域问题

133 天前
 xiao20161010

环境: 1-用 jQuery 的小案例做了一个 post 请求 2-用 eclipse 搭建了一个简单的 Tomcat+servlet ,并运行起来,输入 IP 或者 localhost 都可以正常访问 3-本地直接打开 html 文件,用 jQuery 的 post 请求传两个参数 username 和 password ,URL 地址就是 IP:8080/项目名

报 cors 错误,应该是跨域的问题,本地直接打开的协议和请求的协议不一样,这是从元宝提问所给的回答中得到的消息,但是我死活解决不了,后台设置什么 header 之类的,前台设置 manifest 之类的,都不好使

无解了吗,小白请教

这个问题简单描述就是我本地写的是静态 HTML ,但是需要请求局域网内的服务器来获取数据

3272 次点击
所在节点    程序员
29 条回复
henix
133 天前
如果你要从 file:// 的地址访问 http:// 的 API ,那各个浏览器默认都是不支持的
参考: https://stackoverflow.com/questions/10752055/cross-origin-requests-are-only-supported-for-http-error-when-loading-a-local
所以推荐的做法是把 html 放到 tomcat 里面,然后统一通过 http:// 协议访问,这样就不存在跨域问题
但看你的描述似乎不能这样,为什么必须要本地打开 html ?你想实现什么功能?
danhahaha
133 天前
我觉得楼主可能是收拾房子翻出一本《 7 天精通网站建设》,要不然 jquery 这几个字母很难看到了,这大概是今年第二次见到这个词,上一次还是提交某政府网站的资料无法提交时候点开开发工具的时候
itechify
132 天前
日经贴,上周才看到跨域贴
restkhz
132 天前
额,更正一下,我做了一下测试。搭建了一个 api 服务,走 json ,而后用 jquery 提交 json ,本地 html 直接浏览器打开。
用的 chrome 两个版本,125 和 86 ,还有一个 firefox 。总共三个浏览器。
只要设置了 Access-Control-Allow-Origin: * 其实是可以跨站的。我不清楚无论是 Tomcat+servlet ,也不知道你提交的是不是 json 。反正,json post 走了 preflight 还是普通 get 和 post 都成功了。可能 java 那边设置不同吧,我不懂。

但是我记得之前貌似是不可以的...

当然我也不得不吐槽一下这些浏览器安全设计...SOP 太严格,就搞 cors 打补丁,搞搞 cookie 策略,搞搞 CSP...
xiaoming1992
132 天前
别搞什么 nginx, 繁琐得要死。如果要起服务,直接在 htm 文件所在的目录 `python3 -m http.server 8000` 或者 `npx http-server . -p 8000`起一个服务就好了。
xiaoming1992
132 天前
跨域还有可能是你带了响应没有明确允许的 header
pytth
132 天前
实在不行 jsonp
lyxxxh2
132 天前
我猜 ai 让你改*
*在 chrome 不管用的,而在搜狗浏览器又可以。
指定 origin 。
origin method head 都有可能是问题,最好发控制台的红色报错。
lyxxxh2
132 天前
@lyxxxh2

记错了,反正能不用*就不用。
本想偷懒,结果没偷到。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://ex.noerr.eu.org/t/1133062

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX