相关疑难解决方法(0)

动态加载JavaScript文件

如何可靠地动态加载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)

脚本元素有哪些可用事件?

javascript import file include

158
推荐指数
8
解决办法
13万
查看次数

带CORS的IE9 jQuery AJAX返回"访问被拒绝"

以下适用于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请求?

jquery jsonp cross-domain cors internet-explorer-9

123
推荐指数
3
解决办法
14万
查看次数

XMLHttpRequest无法加载XXX没有'Access-Control-Allow-Origin'标头

TL;博士; 关于同源政策

我有一个Grunt进程,它启动了express.js服务器的实例.刚刚开始提供空白页面,并且Chrome中的开发人员控制台的错误日志中出现以下内容(最新版本),这一点工作非常精细:

XMLHttpRequest无法加载https://www.example.com/ 请求的资源上没有"Access-Control-Allow-Origin"标头.因此不允许来源" http:// localhost:4300 "访问.

什么阻止我访问该页面?

javascript same-origin-policy cors

92
推荐指数
2
解决办法
9万
查看次数

CORS POST请求可以使用普通的javascript,但为什么不使用jQuery?

我正在尝试制作一个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 jquery xmlhttprequest cors

84
推荐指数
3
解决办法
19万
查看次数

将外部Javascript与定义全局(窗口)范围中的方法隔离开来

我需要在我的网站上包含对第三方编写的JavaScript的引用.遗憾的是,编写此脚本的开发人员决定全局定义其所有功能.你知道,像这样:

function AwesomeStringHelper() {
  // ...
}

function MyGreatFunction() {
  // ...
}
Run Code Online (Sandbox Code Playgroud)

当我使用<script>标记引用此脚本时,这两个方法都将添加到window对象中.

由于我不想污染全局范围,有没有办法可以更改外部脚本的范围?理想情况下,我希望能够引用类似于ExternalLibrary.MyGreatFunction()等的这些方法.我无法修改第三方脚本,因为它是在外部托管的,并且它经常更改.

javascript

10
推荐指数
2
解决办法
1007
查看次数

Safari中的跨源资源共享策略拒绝跨域重定向

我们有一个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策略中允许重定向?

safari cors

8
推荐指数
2
解决办法
1万
查看次数

jQuery:跨域AJAX调用导致"访问受限制的URI被拒绝"(代码1012)

我想要做的是在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)

javascript ajax jquery json cors

5
推荐指数
1
解决办法
5448
查看次数

无法 POST 到 IHTTPHandler 类,Access-Control-Allow-Origin 不允许来源

我有一个 C# SOAP Web 服务以及一些IHTTPHandler部署到https://localhost:123. 我有一个 HTML 页面,http://localhost试图使用 jQuery 将 AJAX POST 请求发送到这些处理程序之一。我每次都会得到以下信息:

XMLHttpRequest 无法加载https://localhost:123/(S(the_session_id))/MyHandler.ashxhttp://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)

.net ajax ssl jquery cors

5
推荐指数
1
解决办法
5034
查看次数

使用jquery的CORS错误

我目前正在使用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)

并且没有任何内容记录到控制台.请问我该如何解决这个错误?

谢谢.

javascript ajax jquery cors

5
推荐指数
3
解决办法
4万
查看次数

使用jQuery/ajax进行基本身份验证

我正在尝试创建基本身份验证页面,其中我的表单有三个字段

  1. 用户名
  2. 密码
  3. 授权类型

在提交表单时,我只想在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)

javascript ajax jquery request-headers

5
推荐指数
1
解决办法
1909
查看次数

在angular2中使用http访问Amazon s3

当我尝试在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)

谁能帮助我解决这个问题,谢谢

javascript http amazon-s3 amazon-web-services angular

3
推荐指数
1
解决办法
2473
查看次数