我希望公开一个用于发布和检索数据的宁静网络服务,这可能会被移动设备或网站使用。
现在服务的实际创建不是问题,似乎是一个问题是从不同的域进行通信。
我已经在ASP.NET开发服务器上部署了一个简单的示例服务,它只公开了一个简单的POST动作来发送带有JSON内容的请求。然后我用jquery ajax创建了一个简单的网页来发送一些虚拟数据,但我相信我会被同样的原始政策所蜇伤。
这是常见的事情,你如何解决这个问题?有些地方已经提到在域名上有一个你总是要求获取的代理,但是你不能以一种宁静的方式使用它......
这是一个简单修复的常见问题吗?因为似乎有很多宁静的服务允许第三方使用他们的服务......
答案 0 :(得分:1)
你究竟是如何“以同样的原籍政策蜇”?从您的描述中,我看不出它是如何相关的。如果yourdomain.com/some-path/defined-request.json
返回某个JSON响应,那么无论请求文件是什么,它都将返回该响应,除非您具有明确定义的不满足的必需凭据。
以下是此类Web服务的示例。无论请求发生在何处,它都将返回相同的JSON对象:http://maps.googleapis.com/maps/api/geocode/json?address=1600+Amphitheatre+Parkway,+Mountain+View,+CA&sensor=true
除非我误解你(在这种情况下你应该澄清你的实际问题),same origin policy似乎并不适用于此。
“我创建一个简单的HTML页面并将其加载为 file://myhtmlfilelocation/myhtmlfile.html
并尝试发出ajax请求”
问题的原因是您使用的是file://
URL方案,而不是http://
协议方案。您可以在Section 3.10 of RFC 1738中找到有关此方案的信息。这是一段摘录:
文件URL方案用于指定特定主机上可访问的文件。与大多数其他URL方案不同,此方案不指定可通过Internet普遍访问的资源。
在发出异步HTTP请求时,您应该能够使用http://
方案而不是file://
方案解决问题。