从浏览器托管的JavaScript应用到自定义服务器的跨域资源共享
Cross-Origin Resource Sharing from browser-hosted JavaScript app to custom server
我正在寻找一种方法,允许浏览器托管的JS应用程序使请求服务器运行在不同的端口,可能,不同的机器比这是在第一个地方服务的JS应用程序。
我服务于一个简单的JavaScript (HTML5)应用程序从我的Mac OS X Apache web服务器。我希望能够在Windows、Android和OS x上尽可能多的浏览器上运行这个应用程序,但我将满足于每种浏览器一个。
我的JavaScript应用程序使用XMLHttpRequest向返回JSON的最小自定义服务器发出请求。
例如,我的JS应用程序可以访问http://10.0.1.3/poc/dashboard.html
和我的自定义服务器在同一台机器上运行,监听端口49379…像这样的请求http://10.0.1.3:49379/find?name=Fred
将返回一组元组,其中'name'等于'Fred'。
如果我直接在导航工具栏中输入这个请求,那么我就得到了想要的结果。
如果我在JS中发出相同的请求,我会得到几个错误。
var theXHR = new XMLHttpRequest();
theXHR.onreadystatechange = onReadyStateHandler;
theXHR.open("GET", "http://" + ipAddress + ":49379/find?name=Fred", true);
theXHR.setRequestHeader("User-Agent", "XMLHTTP/1.0");
theXHR.send(null);
我得到这两个错误:
拒绝设置不安全的报头"User-Agent"
XMLHttpRequest无法加载
http://10.0.1.3:49379/find?name=Fred
。原产地http://10.0.1.3
不允许Access-Control-Allow-Origin .
我已经控制了Apache服务器,JavaScript和自定义服务器。这只是一个概念验证,将在孤立的网络上进行演示。所以,我不关心安全问题。
此外,我在Chrome, Firefox, Safari中运行。所有这些似乎都使用XMLHttpRequest2对象。
我找到了绕过CORS的方法是使用jsonp -这是带有回调函数的json -我从未将其与XMLHttpRequest一起使用,但它可以与jQuery ajax函数(如$.getJSON
)一起使用。在url查询字符串中,只需添加参数jsoncallback=?
,瞧,没有更多的CORS问题。$.getJSON
动态地将其success
参数赋值给回调函数
- LoadControl HttpCompileException自定义服务器控件JavaScript错误
- 在节点中超级测试自定义快速服务器
- ASP.net自定义控件,下拉值必须在服务器端填充,所选值在返回时丢失
- 自定义验证在服务器端有效,但在客户端无效
- 将带有自定义数据的图像上载到服务器
- 在我的谷歌自定义搜索引擎从服务器获取数据后,我如何激发一些javascript代码
- 如何实现自定义 Auth0 登录表单的服务器端代码
- 内部服务器错误在 post 请求中使用 Angular js 中的自定义服务
- Yeoman 应用程序 - 使用自定义 Nodejs 服务器
- 具有服务器发送事件的自定义事件
- SignalR 自定义服务器端方法
- 将服务器端的自定义验证器替换为客户端
- 谷歌地图自定义制作工具没有出现在我的服务器上,但适用于本地主机
- 带有peerjs的自定义服务器 - 没有文档让我一无所知
- 可以在服务器上查看自定义字体,但不能在本地查看
- 如何避免网站中的自定义/服务器错误
- 在浏览器关闭时,JavaScript并不总是调用自定义的服务器端方法(Asp.Net/C#)
- 如何向hapi服务器在路由中发送的每种响应发送自定义标头
- 使用位于不同服务器上的自定义字体
- 自定义错误对象与阿波罗服务器