相关疑难解决方法(0)

使用IE11的CORS请求

我有一个CORS(跨源资源共享)请求从我的登录页面到应用程序站点,在不同的URL上.我有一个简单的页面我ping以确定用户是否已经登录,如果是,则重定向它们.否则我会显示一个登录页面.我使用jQuery.

这适用于safari,chrome,firefox ......而不是IE(自然).根据MS,IE 10及更高版本应该使用withCredentials支持CORS请求

我正在使用jquery-2.0.3.min.js

任何想法为什么这不适用于IE11?

编辑:它似乎部分工作,因为它现在返回值{"id":false}.每次都会发生这种情况,这意味着服务器永远不会获得凭据.我也发布了我的is_logged_in页面,我正在使用代码点火器框架.

编辑:在IE的安全设置下启用"允许跨域的数据源"后,我不再收到任何错误消息.

我收到的确切错误是:

SEC7118:用于http://mysite.net/guest/is_logged_in的 XMLHttpRequest 需要跨源资源共享(CORS).

$.ajax({
url: 'http://mysite.net/guest/is_logged_in',
type: 'POST',
crossDomain: true,
xhrFields: {
       withCredentials: true
  },

dataType: 'json',
success: function(data) {

    if(data.id) {
        window.location.replace("http://mysite.net");
    }
}
});
Run Code Online (Sandbox Code Playgroud)

public function is_logged_in()
{
    $allowed = array(
        'http://mysite.net',
        'http://www.mysite.net',
        'http://www.mysite.com',
    );

    $url = $_SERVER['HTTP_REFERER'];
    $url = substr($url, 0, strpos($url, '/', 8));
    if(isset($_SERVER['HTTP_ORIGIN']))
    {
        if(in_array($_SERVER['HTTP_ORIGIN'], $allowed))
        {
            $this->output->set_header('Access-Control-Allow-Origin: ' . $_SERVER['HTTP_ORIGIN']);
        }
    }
    else
    {
        if(in_array($url, $allowed))
        {
            $this->output->set_header('Access-Control-Allow-Origin: ' . …
Run Code Online (Sandbox Code Playgroud)

jquery cors internet-explorer-11

25
推荐指数
3
解决办法
7万
查看次数

Internet Explorer 10忽略XMLHttpRequest'xhr.withCredentials = true'

我目前在使用IE10进行跨域ajax调用时遇到问题(在IE10模式下,不兼容).

情况:我有两个域名,http://ahttp://b.我有一个cookie设置http://b.我目前在页面上http://a.

我想做一个http://b使用XMLHttpRequest 的CORS请求(根据http://blogs.msdn.com/b/ie/archive/2012/02/09/cors-for-xhr-in-ie10.aspx,这应该可行.),并在请求中包含cookie.JS如下:

var xhr = new XMLHttpRequest();
xhr.open('GET', 'http://b', true);
xhr.withCredentials = true;
xhr.send();
Run Code Online (Sandbox Code Playgroud)

这应该确保cookie附加到请求; 然而,Fiddler跟踪显示没有附加cookie,我得到了401: Access Denied.

服务器配置为使用CORS,它包括Access-Control标头:

Access-Control-Allow-Origin: http://a
Access-Control-Allow-Credentials: true
Run Code Online (Sandbox Code Playgroud)

(这不应该有任何区别,因为没有OPTIONS预检请求,并且IE发送的第一个请求是GET,并且cookie不存在,从而导致401).

此外,JS代码段在Firefox和Opera中均可正常运行.

javascript ajax internet-explorer cors

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

CORS不适用于IE10中的cookie

我有使用CORS并设置cookie的GWT应用程序.它在Chrome,Firefox,Opera中运行良好,但在IE10(版本10.0.9200.16521)中我收到此错误:

SCRIPT5022: com.google.gwt.core.client.JavaScriptException: (InvalidStateError) 
 code: 11
 ABORT_ERR: 20
 DATA_CLONE_ERR: 25
 DOMSTRING_SIZE_ERR: 2
 HIERARCHY_REQUEST_ERR: 3
 INDEX_SIZE_ERR: 1
 INUSE_ATTRIBUTE_ERR: 10
 INVALID_ACCESS_ERR: 15
 INVALID_CHARACTER_ERR: 5
 INVALID_MODIFICATION_ERR: 13
 INVALID_NODE_TYPE_ERR: 24
 INVALID_STATE_ERR: 11
 NAMESPACE_ERR: 14
 NETWORK_ERR: 19
 NOT_FOUND_ERR: 8
 NOT_SUPPORTED_ERR: 9
 NO_DATA_ALLOWED_ERR: 6
 NO_MODIFICATION_ALLOWED_ERR: 7
 PARSE_ERR: 81
 QUOTA_EXCEEDED_ERR: 22
 SECURITY_ERR: 18
 SERIALIZE_ERR: 82
 SYNTAX_ERR: 12
 TIMEOUT_ERR: 23
 TYPE_MISMATCH_ERR: 17
 URL_MISMATCH_ERR: 21
 VALIDATION_ERR: 16
 WRONG_DOCUMENT_ERR: 4: InvalidStateError 
B3D7C8F35C000AA1ADFE700845710C1A.cache.html, line 1102 character 7
Run Code Online (Sandbox Code Playgroud)

我看到执行时会抛出错误:

xhr.withCredentials = true;
Run Code Online (Sandbox Code Playgroud)

这是GWT javascript代码:

function create_3(){
  var xhr;
  if ($wnd.XMLHttpRequest) {
    xhr …
Run Code Online (Sandbox Code Playgroud)

cookies gwt cors internet-explorer-9 internet-explorer-10

7
推荐指数
2
解决办法
8703
查看次数