【发布时间】:2016-04-11 14:44:24
【问题描述】:
- 由于 Same-Origin-Policy,我无法使用 AJAX (XMLHTTPRequest)。
- 我无法访问服务器内部,我也没有 服务器代码。
- 服务器只支持HTTPMethods:
POST, OPTIONS - 我不能使用第三个服务器(例如使用 curl)
我可以使用表单-Post
<form method="post" action="some-web-server.com/something.JSON">
<input name="param" value="some JSON param" />
</form>
得到答案,但我被重定向到 JSON.page 以获得答案。 有没有可能在 JS 中得到响应?类似的东西:
<form target="javascript: someFunctionUsingTheResponse(this.submit())" method="post" action="someServer/st.JSON" >
在 HTML 头中
<script type="text/javascript">
function someFunctionUsingTheResponse(text){
alert(text);
}
</script>
更新:
我已经尝试创建一个 <iframe name="dummy"> 并将表单的目标设置为这个虚拟 iframe <form target="dummy"> 效果很好(在 Chrome 中,在 IE 中不起作用),但我仍然无法使用 JS 访问 iFrame 的数据. (原产地政策)
【问题讨论】:
-
您的代码有服务器端部分吗?您可以将 ajax 请求发送到您自己的服务器并从那里执行
curl以从远程 JSON 获取答案,然后将该值返回到您的前端。 -
jsonp是你所需要的 -
jsonp很棒,但据我所知,远程服务器必须支持它,否则它将无法工作,即将所有内容包装在回调参数中,因此它可能不是 OP 的选项. -
不,如果您从服务器端执行
curl,那么即使它是不同的域也没关系(只要您可以访问它并且它没有被外部阻止等)。 curl 的一个例子:stackoverflow.com/questions/3062324/what-is-curl-in-php -
您可以向自己的服务器发送请求,然后使用 curl 向另一台服务器发送请求。请求:浏览器->自己的服务器(ajax)->不同的服务器(curl)响应:浏览器
标签: javascript html json forms