问题是您正在尝试进行跨域调用(从
http://localhost:8080到
http://localhost:9000)。Same Origin
Policy不允许这样做,因此浏览器试图使用跨域资源共享来询问服务器是否可以允许跨域调用。(这是
OPTIONS您正在看到的HTTP请求。)由于服务器未
OPTIONS使用允许调用的标头来答复请求,因此出于安全原因,浏览器拒绝了该请求。
SOP适用于所有真正的“ ajax”调用(例如,通过
XMLHttpRequest)。您可以:
更新服务器以实现对
OPTIONS
请求的响应,并返回标头以允许调用(这将使其在大多数现代浏览器上运行),或者将请求发送到同一端口(我想您没有这样做是有原因的),因此该请求发送到相同的源并且SOP不适用,或者
切换到使用
JSON-P
。但是JSON-P
不适用于表单提交,因为它是GET
,并且GET
操作本应是幂等的,而大多数表单提交则不是。因此,除非这恰好是幂等的表单提交(例如,搜索),否则使用JSON-P充其量是最好的方法。



