如何可靠地动态加载JavaScript文件?这将用于实现一个模块或组件,当'初始化'时,组件将根据需要动态加载所有需要的JavaScript库脚本.
使用该组件的客户端不需要加载<script>实现此组件的所有库脚本文件(并手动将标记插入其网页) - 只需要"主"组件脚本文件.
主流JavaScript库如何实现这一目标(Prototype,jQuery等)? 这些工具是否将多个JavaScript文件合并为一个可再发行的"构建"版本的脚本文件?或者他们是否动态加载辅助"库"脚本?
这个问题的补充:有没有办法在加载动态包含的JavaScript文件后处理事件? 原型document.observe适用于文档范围的事件.例:
document.observe("dom:loaded", function() {
// initially hide all containers for tab content
$$('div.tabcontent').invoke('hide');
});
Run Code Online (Sandbox Code Playgroud)
脚本元素有哪些可用事件?
以下适用于IE以外的所有浏览器(我在IE 9中测试).
jQuery.support.cors = true;
...
$.ajax(
url + "messages/postMessageReadByPersonEmail",
{
crossDomain: true,
data: {
messageId : messageId,
personEmail : personEmail
},
success: function() {
alert('marked as read');
},
error: function(a,b,c) {
alert('failed');
},
type: 'post'
}
);
Run Code Online (Sandbox Code Playgroud)
我有另一个使用的函数dataType: 'jsonp',但我不需要在这个AJAX调用上返回任何数据.我的最后一招将是返回JSONP中包含的一些乱码,以使其正常工作.
任何想法为什么IE搞砸了没有返回数据的CORS请求?
我有一个Grunt进程,它启动了express.js服务器的实例.刚刚开始提供空白页面,并且Chrome中的开发人员控制台的错误日志中出现以下内容(最新版本),这一点工作非常精细:
XMLHttpRequest无法加载https://www.example.com/ 请求的资源上没有"Access-Control-Allow-Origin"标头.因此不允许来源" http:// localhost:4300 "访问.
什么阻止我访问该页面?
我正在尝试制作一个Cross Origin帖子请求,并且我使用这样的普通Javascript工作:
var request = new XMLHttpRequest();
var params = "action=something";
request.open('POST', url, true);
request.onreadystatechange = function() {if (request.readyState==4) alert("It worked!");};
request.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
request.setRequestHeader("Content-length", params.length);
request.setRequestHeader("Connection", "close");
request.send(params);
Run Code Online (Sandbox Code Playgroud)
但我想使用jQuery,但我无法让它工作.这就是我正在尝试的:
$.ajax(url, {
type:"POST",
dataType:"json",
data:{action:"something"},
success:function(data, textStatus, jqXHR) {alert("success");},
error: function(jqXHR, textStatus, errorThrown) {alert("failure");}
});
Run Code Online (Sandbox Code Playgroud)
这导致失败.如果有人知道为什么jQuery不起作用,请让我们都知道.谢谢.
(我正在使用jQuery 1.5.1和Firefox 4.0,我的服务器正在使用正确的Access-Control-Allow-Origin标头进行响应)
我需要在我的网站上包含对第三方编写的JavaScript的引用.遗憾的是,编写此脚本的开发人员决定全局定义其所有功能.你知道,像这样:
function AwesomeStringHelper() {
// ...
}
function MyGreatFunction() {
// ...
}
Run Code Online (Sandbox Code Playgroud)
当我使用<script>标记引用此脚本时,这两个方法都将添加到window对象中.
由于我不想污染全局范围,有没有办法可以更改外部脚本的范围?理想情况下,我希望能够引用类似于ExternalLibrary.MyGreatFunction()等的这些方法.我无法修改第三方脚本,因为它是在外部托管的,并且它经常更改.
我们有一个api端点,可以重定向到另一台服务器.它通过XHR调用,似乎在大多数浏览器中都能正常工作,除了Safari(特别是在iOS上).
我在控制台中遇到的错误是:跨源重定向被跨源资源共享策略拒绝
我们在执行重定向的页面上和其他服务器上有CORS.重定向页面设置:
Access-Control-Allow-Origin: *
Access-Control-Allow-Credentials: false
Run Code Online (Sandbox Code Playgroud)
另一台服务器有:
Access-Control-Allow-Origin: *
Run Code Online (Sandbox Code Playgroud)
如何在CORS策略中允许重定向?
我想要做的是在HTTP协议上有一个页面,将AJAX调用发送到同一个Web服务器,但使用HTTPS.请求页面和AJAX处理程序都在同一台服务器上,具有相同的域和端口.(即,唯一的区别是协议.)为了说明,
来自 http://www.example.com/index.php
触发对https://www.example.com/authenticate.php?user=123&password=456的jQuery AJAX调用
(我希望通过HTTPS传递密码,使其通过Internet加密.由于一些设计限制,我必须使用AJAX调用而不是重定向页面.)
我知道这里有一个CORS问题,因此我研究了一下,发现我实际上可以使用Access-Control-Allow-Origin标头来提供帮助.然后我在Apache的配置文件中设置以下内容,
Header set Access-Control-Allow-Origin *
Header set Access-Control-Allow-Methods "GET, POST, PUT, DELETE, OPTIONS"
Header set Access-Control-Allow-Headers "content-type, accept"
Header set Access-Control-Max-Age 1000
Run Code Online (Sandbox Code Playgroud)
我可以看到,当浏览器从服务器请求资源时,可以看到标题.请求:
Accept */*
Accept-Encoding gzip, deflate
Accept-Language en-us,en;q=0.5
Authorization Basic Y2FzZXRhZ3JhbWRldjpwYXNzd29yZGRldiE=
Cache-Control no-cache
Connection keep-alive
Cookie __utma=99230732.2019724749.1337107099.1337849971.1337856946.9; __utmz=99230732.1337107099.1.1.utmcsr=(direct)|utmccn=(direct)|utmcmd=(none); __utma=217650581.954519005.1337107174.1337772401.1337777327.5; __utmz=217650581.1337107174.1.1.utmcsr=(direct)|utmccn=(direct)|utmcmd=(none); __utmc=99230732; PHPSESSID=m8lnqhqv2qa6f884a8um413n81
Host www.example.com
Pragma no-cache
Referer http://www.example.com/index.php
User-Agent Mozilla/5.0 (Macintosh; Intel Mac OS X 10.7; rv:12.0) Gecko/20100101 Firefox/12.0
Run Code Online (Sandbox Code Playgroud)
回答是这样的,
Accept-Ranges bytes
Access-Control-Allow-Head... content-type, accept
Access-Control-Allow-Meth... GET, POST, PUT, DELETE, …Run Code Online (Sandbox Code Playgroud) 我有一个 C# SOAP Web 服务以及一些IHTTPHandler部署到https://localhost:123. 我有一个 HTML 页面,http://localhost试图使用 jQuery 将 AJAX POST 请求发送到这些处理程序之一。我每次都会得到以下信息:
XMLHttpRequest 无法加载
https://localhost:123/(S(the_session_id))/MyHandler.ashx。http://localhostAccess-Control-Allow-Origin 不允许来源。
我尝试创建一个CrossOriginModule模块和处理程序,就像这个问题CrossOriginHandler一样,按照他们的建议更新我的 web.config 。我已经尝试添加到我的处理程序中,正如这个问题中所建议的。我尝试按照这篇博客文章中的步骤添加到web.config 中的/中。没有任何帮助。context.Response.AppendHeader("Access-Control-Allow-Headers", "x-requested-with");ProcessRequestOPTIONSSimpleHandlerFactory-Integrated-4.0system.webServerhandlers
这是我的处理程序ProcessRequest:
public void ProcessRequest(HttpContext context)
{
context.Response.ContentType = "application/json";
context.Response.AppendHeader("Access-Control-Allow-Origin", "*");
context.Response.AppendHeader("Access-Control-Allow-Headers", "x-requested-with");
context.Response.Write( /* some JSON string */ );
}
Run Code Online (Sandbox Code Playgroud)
这是我的 web.config 的相关部分:
<system.webServer>
<httpProtocol>
<customHeaders>
<add name="Access-Control-Allow-Origin" value="*" />
</customHeaders> …Run Code Online (Sandbox Code Playgroud) 我目前正在使用cloudapp API开发一个项目,我正在使用jquery.这是我的代码:
$.ajax({
headers: { "Accept": "application/json"},
type: 'GET',
url: 'http://cl.ly/2wr4',
crossDomain: true,
success: function(data, textStatus, request){
console.log(data);
}
});
Run Code Online (Sandbox Code Playgroud)
当我运行这个时,我得到200 OK响应并在Firefox中出现此错误:
Cross-Origin Request Blocked: The Same Origin Policy disallows reading the remote resource at http://cl.ly/2wr4. This can be fixed by moving the resource to the same domain or enabling CORS.
Run Code Online (Sandbox Code Playgroud)
以及Google Chrome中的此错误:
XMLHttpRequest cannot load http://cl.ly/2wr4. No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'null' is therefore not allowed access.
Run Code Online (Sandbox Code Playgroud)
并且没有任何内容记录到控制台.请问我该如何解决这个错误?
谢谢.
我正在尝试创建基本身份验证页面,其中我的表单有三个字段
在提交表单时,我只想在JSON格式的HTML上显示来自服务器的返回响应.我对Web服务的AJAX调用还需要设置Authorization标头.但不知何故标题没有设置.我在尝试
beforeSend : function(xhr)
{
xhr.setRequestHeader('Authorization', "Basic ******");
xhr.setRequestHeader("contentType", "application/json;charset=UTF-8");
}
Run Code Online (Sandbox Code Playgroud)
但是当我在控制台中调试代码时,似乎断点永远不会进入这个功能.我是Ajax的新手,并通过在互联网上搜索下面的代码.我在下面发布完整的代码.
码:
$(document).ready(function() {
// process the form
$('form').submit(function(event) {
// get the form data
var formData = {
'username': $('#username').val(),
'password': $('#password').val(),
'grant_type': $('#grantType').val()
};
// process the form
$.ajax({
type : 'POST',
url : 'http://localhost:9090/oauth/token',
beforeSend: function (xhr)
{
xhr.setRequestHeader("Authorization", "Basic ******");
xhr.setRequestHeader("contentType", "application/json;charset=UTF-8");
},
data : formData, // our data object
dataType : 'json', // what type of …Run Code Online (Sandbox Code Playgroud) 当我尝试在Angular2应用程序中使用http调用访问文件时,我的Amazon s3存储桶中有一个.json文件,但出现错误
跨域请求被阻止:“同源起源”策略不允许读取https://s3.us-east-2.amazonaws.com/....../list.json上的远程资源 。(原因:CORS标头“ Access-Control-Allow-Origin”缺失)。
我将存储桶中的文件公开,并以读取,写入和编辑的方式进行了访问。
这是我的角度代码:
getValue(){
return this._http.get('https://s3.us-east-2.amazonaws.com/........./list.json').toPromise().then(res => <Contact[]> res.json().data)
.then(data => {return data;});
}
Run Code Online (Sandbox Code Playgroud)
我在AWS中的跨源XML
<CORSConfiguration>
<CORSRule>
<AllowedOrigin>*</AllowedOrigin>
<AllowedMethod>GET</AllowedMethod>
<AllowedMethod>POST</AllowedMethod>
<AllowedMethod>PUT</AllowedMethod>
<AllowedMethod>DELETE</AllowedMethod>
<MaxAgeSeconds>3000</MaxAgeSeconds>
<AllowedHeader>*</AllowedHeader>
</CORSRule>
</CORSConfiguration>
Run Code Online (Sandbox Code Playgroud)
谁能帮助我解决这个问题,谢谢