Access-Control-Allow-Methods怎么不起作用呢?

hphper 发布于 2016/11/06 21:45
阅读 520
收藏 0

发送请求的页面

http://a.cn/a.html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title></title>
    <script src="//cdn.bootcss.com/jquery/3.1.1/jquery.min.js"></script>
</head>
<body>
<div class="btn" style="cursor: pointer;text-align:center;width: 100px;height: 50px;line-height:50px;color:white;background: green">click</div>
<script>
$(function(){
    $(".btn").click(function(){
        var xhr=new XMLHttpRequest();
        xhr.onreadystatechange=function(){
            var state=xhr.readyState;
            if(state==4){
                console.log(xhr.getAllResponseHeaders());
            }
        }
        xhr.open('GET','http://b.cn/do.php?a=1&b=2');
        xhr.setRequestHeader("content-type",'multipart/form-data');
//        xhr.setRequestHeader("content-type",'application/x-www-form-urlencoded');
        xhr.send('p1=1');

    });

});

</script>

</body>
</html>



接收请求的
http://b.cn/do.php
文件

<?php
header('Access-Control-Allow-Origin:http://a.cn');
header('Access-Control-Allow-Methods:POST');
var_dump($_POST);
var_dump($_GET);
var_dump(file_get_contents("php://input"));



我发送的是get请求 不是post请求

Access-Control-Allow-Methods 不是设置了只允许post吗 怎么不起作用呢?

现在是请求能返回数据

加载中
0
wuyiw
wuyiw

https://developer.mozilla.org/en-US/docs/Web/HTTP/Access_control_CORS#Preflighted_requests

https://www.w3.org/TR/cors/#access-control-allow-methods-response-header

Access-Control-Allow-Methods这个标头是用在preflight请求中的, 你的请求并不符合需要preflight请求的条件, 所以没有起作用.


hphper
hphper
preflight请求的条件 是啥呀,看了下你给的链接,没整明白呀
0
狂飙的小蜗牛
狂飙的小蜗牛
这个要在nginx,apache上设置,等到php执行header的时候GET,POST数据已经接收完毕了
狂飙的小蜗牛
狂飙的小蜗牛
回复 @hphper : 谷歌 Access-Control-Allow-Methods apache 或者 Access-Control-Allow-Methods nginx 资料一大把
hphper
hphper
谢谢,怎么设置呀,能简单的透露点不呀,如果查资料 该怎么查呢?
0
wuyiw
wuyiw
看mdn那个链接,里面有“In particular, a request is preflighted if:”
返回顶部
顶部