我正在尝试创建一个书签,它将启动对我编写的 aspx 页面的 AJAX 调用。
当我将 javascript 放在静态 html 页面中时,代码测试完美,但是当我尝试从书签中调用它时,代码将卡在 xmlHttp.open("GET", url, true)部分。
小书签的代码基本是这样的(在网上找了几个例子):
javascript:(function(){
var s,
d=document,
a=function(o){ d.body.appendChild(o) };
s=d.createElement('script');
s.type='text/javascript';
s.src='http://localhost/squirt/sq.js';
a(s)
})();
这会将 sq.js 的内容(ajax 调用 + 一些其他处理)添加到浏览器当前所在的任何页面,然后将 ajax 调用到我的 aspx 页面。
我正在使用 ASP 2.0(与 VS2008)和 IIS 7。到目前为止,我只是在我的家庭网络上测试它。
我假设来自外部页面的 ajax 调用一定存在某种权限问题,因为正如我所说,静态页面的一切正常。这是我需要更改的 IIS 设置以允许调用,还是我做错了什么?
最佳答案
XMLHttpRequest 对象遵循同源策略。
这就是为什么您的小书签正在加载的脚本不能使用 XHR 从您的服务器获取数据,除非它嵌入到您服务器的页面中。
通过动态添加脚本标签添加的脚本将起作用,正如您所知 - 您的小书签可以从不同来源加载脚本。
这就是你的答案。不要使用 XMLHttpRequest 对象:以与小书签相同的方式动态加载脚本。
这就是 JSONP 的工作方式(实际上 JSONP 的功能更多一些,但这就是它绕过 SOP 的方式)
实际上,为什么不直接使用 JSONP
关于asp.net - 从书签 AJAX 调用 asp,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/487978/